Какой метод быстрее и имеет меньше накладных расходов?очистка вектора или определение нового вектора, который быстрее
Метод 1:
void foo() {
std::vector<int> aVector;
for (int i = 0; i < 1000000; ++i) {
aVector.clear();
aVector.push_back(i);
}
}
Метод 2:
void foo() {
for (int i = 0; i < 1000000; ++i) {
std::vector<int> aVector;
aVector.push_back(i);
}
}
Вы можете сказать, что пример не имеет смысла! Но это всего лишь фрагмент моего большого кода. Короче говоря, я хочу знать, это лучше
«создать вектор один раз и очистить его для использования»
или
«создать новый вектор каждый раз, когда»
UPDATE
Спасибо за предложения, я испытал оба и вот результаты
Способ 1:
$ time ./test1
real 0m0.044s
user 0m0.042s
sys 0m0.002s
Способ 2:
$ time ./test2
real 0m0.601s
user 0m0.599s
sys 0m0.002s
Очистка вектора лучше. Возможно, это поможет кому-то еще :)
«очистка вектора или определение нового вектора, который быстрее» - сравнивайте его с тем, что вы будете знать. Нет общего утверждения, которое можно было бы сделать, поскольку это зависит от многих деталей, связанных с платформой и реализацией. –
Согласитесь, но я хочу знать, как g ++ генерирует оптимизированный код для методов. Какой из них лучше для компилятора? – mahmood
Я бы ожидал, что метод 'clear' будет быстрее, если есть какая-либо разница. –