Welche Methode ist schneller und hat weniger Overhead? 1Löschen eines Vektors oder Definieren eines neuen Vektors, welcher ist schneller
Methode:
void foo() {
std::vector<int> aVector;
for (int i = 0; i < 1000000; ++i) {
aVector.clear();
aVector.push_back(i);
}
}
Methode 2:
void foo() {
for (int i = 0; i < 1000000; ++i) {
std::vector<int> aVector;
aVector.push_back(i);
}
}
Sie können sagen, dass das Beispiel sinnlos! Aber das ist nur ein Ausschnitt aus meinem großen Code. Kurz gesagt ich ist es besser,
„erstellen Sie einen Vektor einmal, und deaktivieren Sie es für die Nutzung“ wissen wollen
oder
UPDATE
„einen neuen Vektor jedes Mal schaffen“Danke für die Vorschläge, habe ich beide getestet und hier sind die Ergebnisse
Methode 1:
$ time ./test1
real 0m0.044s
user 0m0.042s
sys 0m0.002s
Methode 2:
$ time ./test2
real 0m0.601s
user 0m0.599s
sys 0m0.002s
den Vektor Clearing ist besser. Vielleicht hilft dies jemand anderen :)
"einen Vektor löschen oder einen neuen Vektor definieren, welcher ist schneller" - benchmarken Sie es und Sie werden es wissen. Es gibt keine allgemeingültige Aussage, da dies von vielen plattform- und implementierungsspezifischen Details abhängt. –
Zustimmen, aber ich möchte wissen, wie g ++ einen optimierten Code für die Methoden generiert. Welche ist besser für Compiler? – mahmood
Ich würde erwarten, dass die "Clear" -Methode schneller ist, wenn es einen Unterschied gibt. –