EASTL 与 STL,std::vector:<uint64_t>:operator[] 怎么会有这样的性能差异

EASTL versus STL, how can there be such a performance difference in std::vector<uint64_t>::operator[]

本文关键字:怎么会 性能 operator std STL vector lt EASTL uint64 gt      更新时间:2023-10-16

根据http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.htmlvector<uint64>::operator[]在EASTL中的速度比"常用的STL商业版本"快2%到70%。

除非STL的商业版本使用范围检查(这会使比较不公平),否则如此简单的操作怎么会有如此大的速度差异呢?

更新:

似乎答案是EA工程师只是通过与使用范围检查的版本进行比较来欺骗…

文档声明他们使用vc++ 2005进行Windows测试,默认情况下启用检查迭代器(是的,即使是发布版本;vc++ 2008也是一样)。我怀疑operator[]的性能不会有任何不同,如果他们将-D_SECURE_SCL=0添加到他们的构建命令行。

我认为文档中的这一段将是至关重要的

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html eastl_allocator

显然是受Pablo Halpern的著名文章"Towards a better allocator model"的启发