错误、漏洞、问题 - 页 2873

 


EX5加载失败
 

执行过程中出现严重错误

struct pack(8) A {
typedef void (*fn)();
        fn f;
};
void OnStart() {}

结果:EX5加载失败

 
A100:

结构的排列是否影响执行的速度?

 
fxsaber:

结构的排列是否影响执行速度?

在某些情况下确实如此,这里有一段话:"在大多数情况下,你不需要担心对齐问题,因为默认的对齐方式已经是最佳的 了。 在某些情况下,通过为数据结构 指定一个自定义的对齐方式, 可以实现显著的性能改进 或内存节省"。

 
A100:

在某些情况下确实如此,这里有一句话:"在大多数情况下,你不需要担心对齐问题,因为默认的对齐方式已经是最佳的了然而,在某些情况下,你可以 通过为数据结构 指定自定义对齐方式来实现显著的性能改进 或内存节省。"

这只是其中的一个例子。

 
fxsaber:

至少有一个这样的例子。

我之所以进行对齐,是因为有必要--引用文档中的话:"在与第三方库(*.DLL)交换数据 时,可能需要对结构字段进行对齐,其中应用了这种对齐方式"。

试着测量所有的包装值,并比较其速度

 
A100:

试着通过所有的包装值进行赌博,比较速度。

我们需要决定衡量哪些代码。

如果我理解正确的话,没有提供类的排列。也就是说,很有可能在处理类对象的 数组(不是指针)时,用对齐的结构来代替类字段是合理的。

总之,我不在这个话题上。

 
fxsaber:

如果我理解正确的话,没有提供类的排列。也就是说,有可能在处理类对象的 数组(不是指针)时,用对齐的结构代替类字段可能是合理的。

现在我已经尝试了包类--尺寸的变化

 

一个关于从Market购买图书馆(不是顾问)的问题。

我想在我的研究中使用图书馆。因此,它应该在任何账户和终端上工作。

对市场图书馆来说,这可能吗?

 
fxsaber:

至少有一个这样的例子。

我怀疑现在是否有很多人使用数据优化,最多是游戏开发商,但即使在那里,每个人都有自己的现成的游戏引擎,这些引擎已经被优化了。

搜索了一下,如果有任何具体的建议,我会在这里搜索https://www.ibm.com/support/knowledgecenter/ru/。

试图搜索,但没有成功 - 有许多查询的变体,这里更接近主题https://www.ibm.com/support/knowledgecenter/ru/ssw_aix_72/performance/cache_tlbs.html

我搜索了 "结构包 "和"结构性能"



如果你检查,它必须是一个豆荚结构,你必须尽可能地扭曲它,即你采取所有的数据类型(长,英,短,char,double,float),并创建15个字段,按数据类型混合字段,所以你可以用打包指令将这些字段至少在计算机字的边界上对齐。

你也可以尝试复制结构,将其作为参数传递给函数,并改变字段的内容。


但是,我认为,如果这些数据(结构数组)的总大小至少是几兆字节,以尽可能地填满处理器的缓存,你就会有明显的区别。