【发布时间】:2010-06-03 19:17:04
【问题描述】:
我想知道访问大型数据结构的最佳方式(性能方面)是什么。 有大约一百种方法可以做到这一点,但编译器最容易优化的方法是什么?
人们可以通过
foo[someindex].bar[indexlist[i].subelement[j]].baz[0]
或创建一些指针别名,如
sometype_t* tmpfoo = &foo[someindex];
tmpfoo->bar[indexlist[i].subelement[j]].baz[0]
或创建参考别名,如
sometype_t &tmpfoo = foo[someindex];
tmpfoo.bar[indexlist[i].subelement[j]].baz[0]
等等……
【问题讨论】:
-
当你测量差异时,你发现了什么?
-
第一个选项是最慢的,可能是由于访问操作员呼叫很多。第二个是这 3 个中最好的。
-
请更新您的问题以表明您已经知道答案并且这是第二个选项。那么,请关闭问题,因为您已经知道答案并且不需要我们提供任何东西。
标签: c++ performance nested