哪种方法更快,开销更少?清除矢量或定义一个新矢量,哪一个更快
方法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
清除矢量更好。也许这有助于其他人:)
“清除矢量或定义一个新矢量,哪一个更快” - 基准它,你会知道的。没有可以做出的一般性陈述,因为这取决于许多平台和实现特定的细节。 – 2013-10-04 19:59:08
同意,但我想知道g ++如何为方法生成优化的代码。哪一个更适合编译器? – mahmood
如果有任何区别,我希望'clear'方法更快。 –