Сегодня я загрузил и создал образец проекта внедрения Electronic Arts STL, и вектор EA выглядит намного медленнее для меня, чем стандарт. Я только что создал 2 векторов и загрузив их с 1 млн пунктов:EASTL performance
void performance_test(void)
{
clock_t start;
clock_t end;
// EA
eastl::string strEA = "hello";
eastl::vector<eastl::string> vec_EA;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_EA.push_back(strEA);
}
end = clock();
printf("EA %f\n", (double(end - start)/1000));
// Standard
std::string strStandard = "hello";
std::vector<std::string> vec_Standard;
start = clock();
for (size_t i = 0; i < 1000000; i++)
{
vec_Standard.push_back(strStandard);
}
end = clock();
printf("Standard %f\n", (double(end - start)/1000));
}
И результаты:
- Е.А. 0,759000
- Стандартный 0,064000
Итак, есть ли что-нибудь что я делаю неправильно, или что-то пропустил? Образец был скомпилирован с помощью набора инструментов платформы v100.
Почему вы отметили C? Собственная стандартная библиотека компилятора может быть оптимизирована специально для этого компилятора. Однако я не уверен, что это должен быть такой порядок. Что такое набор инструментов платформы v100? –
Я не уверен, что буду верить 'clock' для синхронизации, но когда разница в этом велика, все должно быть в порядке. Стоит попробовать вектор EASTL со стандартной строкой и наоборот, чтобы сузить проблему. –
@MarkRansom: Хм. Вектор EA со стандартной строкой быстрее, чем стандартный вектор, но строка также не должна быть быстрее. – CsOkemf