Комментарии 7
Зачем же вы контейнер по значению передаёте? Это же приводит к копированиям. Отсюда и такая разница между вестором и массивом.
Да и вообще, мой личное мнение, этот тест довольно бестолковый.
Да и вообще, мой личное мнение, этот тест довольно бестолковый.
+2
Хм, и даже в таком виде как у вас, на моей системе результаты вектора и массива получились одинаковые. Чем вы компилировали и с какими конкретно флагами?
Ещё одна проблема тестов, это то что тип аргумента val у вас не зависит от типа данных в массиве, что может приводить к избыточным преобразованиям типов.
Ещё одна проблема тестов, это то что тип аргумента val у вас не зависит от типа данных в массиве, что может приводить к избыточным преобразованиям типов.
+1
Отсюда и такая разница между вестором и массивом.
Неправда. Отчет времени начинается после того, как скопируется массив.
Чем вы компилировали и с какими конкретно флагами?
g++ с флагами -O2 -s -DNDEBUG -std=c++11 (Intel Pentium CPU G850, AMD E2-3000M) и VC++ в release-режиме (остальные процессоры).
0
Неправда. Отчет времени начинается после того, как скопируется массив.— да, вы правы.
g++ с флагами -O2 -s -DNDEBUG -std=c++11 (Intel Pentium CPU G850, AMD E2-3000M) и VC++ в release-режиме (остальные процессоры).— тогда вы можете обратить внимание что на GCC результаты одинаковы. То есть на самом деле это не вектор медленнее, а либо VC что-то не так оптимизирует, либо реализация вектора в стадартной библиотеке VC такая.
0
Тест совершенно бессмысленный, т.к. приведённые операции с raw array можно при желании использовать и на векторе через std::vector::data
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Числовые типы и контейнеры C++ с точки зрения производительности