Moin,
Wie kann man in C++ rausfinden, wie schnell ein Programm / Funktion / Algo ist?
Beispiel:
#include <iostream>
#include <ostream>
void swap_int(int& z1, int& z2){
z1 ^= z2;
z2 ^= z1;
z1 ^= z2;
}
int main(){
int i = 1;
int j = 2;
swap_int(i, j);
std::cout<<i<<" "<<j<<std::endl;
std::cin.get();
}
Ist diese Funktion schneller als std::swap(i, j)?
btw: Wie wärs mit einem Monospace-font in den Codetags? Und ein highlightning ohne hellblaue Farbe

Abend,
mit dem folgenden Code kann man unter Linux die vom Programm verbrauchte Zeit messen. In utime befindet sich die Zeit, die das Programm im User-Space verbracht hat. In stime die Zeit, die es im System-Space, also im Kernel, verbracht hat.
Wenn man eine bessere Auflösung wie Sekunden braucht kann man tv_usec (Mikrosekunden seit der letzten vollen Sekunde) dazu nehmen. Also tv_sec und tv_usec zusammen ergeben die verbrauchte Zeit seit Programmstart.
Zum Zeit messen dann die Differenz von 2 getrusage() Aufrufen verwenden.
#include <iostream>
#include <sys/time.h>
#include <sys/resource.h>
using namespace std;
int main()
{
rusage usage;
getrusage(RUSAGE_SELF, &usage);
cout << "Usr: " << usage.ru_utime.tv_sec << endl;
cout << "Sys: " << usage.ru_stime.tv_sec << endl;
}
Für Windows ist mir nur eine Funktion bekannt, die die Zeit auf Milli-Sekunden genau misst. Funktioniert dafür aber unter Windows und unter Linux
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
clock_t begin=clock();
// code
clock_t end=clock();
cout<<"Execution time: "<< 1000*(end - begin)/CLOCKS_PER_SEC <<"ms"<<endl;
return 0;
}
N43
Bzw. ich hab die Schriftart mal auf monospace umgestellt, mir ist aber kein großartiger Unterschied aufgefallen. Das Türkis sollte ich wirklich gegen eine andere Farbe austauschen.
Wunderbar, dankeschön
Falls es wen interessieren sollte: Beide Funktionen sind in etwa gleich schnell, bei 10.000.000 swaps brauchen beide ca 140ms [auf meinem Rechner], wobei die Zahl leicht nach oben und unten schwankt.
btw: Verdana ist kein Monospace-font, ist mir aber letzens genauso passiert oO
btw: Verdana ist kein Monospace-font, ist mir aber letzens genauso passiert oO
hab monospace und Courier fuer Code eingetragen. Schau mir das aber Sonntag nochma an.
Bzw. hab grad festgestellt, dass das Forum im IE 6 falsch angezeigt wird.
N43
Wenn ich das Element mit dem Web Dev anschaue hat es die Schriftart Verdana, IE benutze ich garnicht ;D