【发布时间】:2010-06-22 04:07:17
【问题描述】:
我已经阅读了大量有关数组索引与指针效率的内容,以及除非您经常做某事,否则这并不重要。但是,我经常这样做。
有问题的代码有一个结构数组。 (两种不同的,实际上是两种不同的类型,但无论如何)。由于我的背景主要是高级语言,所以我默认使用标准的particles[i].whatever 格式。但是,我不确定这是否是个好主意。对于单次访问,我知道这并不重要,但就目前而言,我的两个主要函数之一调用particles[i].something 8 次,boxes[boxnum].something 4 次每个粒子,每次迭代。
目前大约需要一秒钟来完成 5000 个粒子和 5000 次迭代。这意味着我每秒处理的这些访问次数超过 [包括其他功能] 2 亿次。在这种频率下,每一点都很重要(尤其是因为我最终会在其他人的集群上按时运行这段代码)。
所以我的问题是,如果 gcc 会神奇地为我做到这一点,或者它真的无关紧要,是否值得按照使用指向结构的指针而不是数组访问的方式做一些事情。
谢谢 ~~泽布
编辑:好的,所以编译器魔术意味着我不应该担心它。谢谢。
您建议使用分析器,但我似乎无法让 gprof 告诉我任何比函数所需时间更细粒度的信息......我已经知道了。有什么可以逐行告诉我的吗?
【问题讨论】:
-
基准测试显示什么?我猜没有区别。
-
无论您做什么,都不要在没有明确定义的方法来衡量更改的成功/失败的情况下开始优化。
标签: c arrays performance