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