根據http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html vector<uint64>::operator[]
是2%和70%在EASTL快於STL的「常用商業版本之間」。EASTL與STL,哪有在STD這樣的性能差異::矢量<uint64_t> ::操作符[]
除非商業版本的STL使用範圍檢查,這會使比較不公平,對於這樣一個簡單的操作,它怎麼可能是這樣的速度差異?
更新:
看來答案是,EA的工程師簡單地通過與使用範圍檢查的版本比較作弊......
不會有什麼區別,因爲'vector <...> :: operator []'實現爲'{return(*(this - > _ Myfirst + _Pos)) ;}'即沒有迭代器參與。 – 2011-04-21 10:47:22
@Viktor Sehr:這是'_SECURE_SCL'#''define'd爲'0'時執行的代碼。當'_SECURE_SCL' ='1'時,默認情況下,運行的代碼基本不同。 (另外請注意,VC++ 2010中的STL實現與VC++ 2005和2008中的STL實現大不相同,因此在這裏查看2010年的實現與此無關。) – ildjarn 2011-04-21 10:53:13
VS2010怎麼樣? – 2011-04-23 19:00:42