EASTL и STL, как может быть такая разница в производительности в std::vector <uint64_t>:: operator []

Согласно http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html vector<uint64>::operator[] в EASTL составляет от 2% до 70% быстрее, чем "обычно используемая коммерческая версия STL".

Если коммерческая версия STL не использует проверку диапазона, что сделало бы сравнение несправедливым, как может быть такая разница в скорости для такой простой операции?

Update:

Кажется, что разработчики EA просто обманывают, сравнивая с версией, которая использует проверку диапазона...

Ответы

Ответ 1

В документе говорится, что они использовали VС++ 2005 для тестирования Windows, с которыми проверены итераторы включен по умолчанию (да, даже для релизов, то же самое касается VС++ 2008). Я подозреваю, что производительность operator[] не будет отличаться, если они добавят -D_SECURE_SCL=0 в свою командную строку сборки.

Ответ 2

Я думаю, что этот отрывок из документации будет иметь решающее значение

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

Это, по-видимому, вдохновлено знаменитой статьей "На пути к лучшей распределительной модели" Пабло Халперна