哪个有更好的表现?一个std :: array或C数组?

use*_*542 -2 c++ arrays performance benchmarking

我一直以为c数组会比C++中的std :: array快,但是我根据访问速度做了一些基准测试,看起来std :: array更快.这是为什么?

Mat*_*son 5

答案是"它取决于",或者更好地说是"没人知道",因为这类问题总是与编译器优化,处理器架构和许多其他因素紧密结合.

我还想指出,如果你在一个系统上找到一个更好的,它可能并不反映它在不同的情况下更好 - 例如不同的编译器或不同的处理器或不同的操作系统.如果整体解决方案非常相似[并且我相信它们就是这种情况],代码生成中的微小差异或处理器体系结构的差异的结果可能会改变任一方向的结果.或者例如,内存分配与缓存行或虚拟内存页面排列的程度如何以避免"额外工作".

总是在讨论表现时,不要猜测,也不要在互联网上询问.测量所有选项,再次测量所有选项(在某些其他平台上,不同的编译器选项等),然后确定哪个更好[假设代码首先处于所有性能关键状态].