我一直以为c数组会比C ++中的std :: array快,但是我根据访问速度做了一些基准测试,看起来std :: array更快。这是为什么?
答案 0 :(得分:5)
答案是“它取决于”,或者更好地说是“没人知道”,因为这类问题总是与编译器优化,处理器架构和许多其他因素紧密结合。
我还想指出,如果你在一个系统上找到一个更好的,它可能无法反映出在不同的情况下它会更好 - 例如不同的编译器或不同的处理器或不同的操作系如果整体解决方案非常相似[并且我相信它们就是这种情况],代码生成中的微小差异或处理器体系结构的差异的结果可能会改变任一方向的结果。或者例如,内存分配与缓存行或虚拟内存页面的排列方式,以避免“额外工作”。
总是在讨论表现时,从不猜测,也不要在互联网上询问。测量所有选项,再次测量所有选项(在某些其他平台上,不同的编译器选项等),然后确定哪个更好[假设代码首先处于所有性能关键状态]。