13

根据http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html,EASTL vector<uint64>::operator[]比“常用的 STL 商业版本”快 2% 到 70%。

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

更新:

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

4

2 回答 2

9

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

于 2011-04-21T10:25:58.700 回答
4

我认为文档中的这段话至关重要

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

它显然受到 Pablo Halpern 著名的“走向更好的分配器模型”文章的启发

于 2011-04-21T10:20:01.763 回答