Ich habe die folgenden zwei Schleifen:Frage zur Schleifengeschwindigkeit
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
int start=clock();
for (int i=0;i<100;i++)
cout<<i<<" "<<endl;
cout<<clock()-start<<"\n"<<endl;
cout<<"\n";
int start1=clock();
for (int j=0;j<100;++j)
cout<<j<<" "<<endl;
cout<<"\n";
cout<<clock()-start1<<" \n "<<endl;
return 0;
}
Ich lief, dass dreimal. In den ersten beiden Läufen war die zweite Runde am schnellsten, aber im dritten Lauf war die erste Runde am schnellsten. Was bedeutet das? Welches ist besser? Kommt es auf die Situation an?
100 Iterationen können zu klein sein, um Schlussfolgerungen zu ziehen ... – Vladimir
Eine andere Möglichkeit, um herauszufinden, wie Code im Performance-Bereich ist es, die generierte Assembly zu betrachten. Sie werden wahrscheinlich das * genaue * gleiche Ding für jede Schleife erzeugt sehen. Pre-versus-Post-Inkrement für primitive Typen ist das gleiche. – GManNickG
@GMan: Wie kann es gleich sein, wenn sich die Semantik unterscheidet? Einverstanden: Der Optimierer wird wahrscheinlich den Rückgabewert des nicht zu verwendenden Postfix erkennen und somit eine identische Disassemblierung erzeugen. – xtofl