Ist mein Programm gut genug?
-
Hallo!
der Folgende code zeigt wie viele Additionen der Prozessor pro sekunde macht.#include <windows.h> #include <iostream.h> int Anzahl; DWORD WINAPI Last(void* arg) { while(true) Anzahl++; } //--------------------------------------------------------------------------- int main() { HANDLE LastThread = CreateThread(NULL, 0, &Last, 0, 0, 0); while(true) { Sleep(1000); cout<<Anzahl<<endl; Anzahl=0; } }Wäre das eine gute Methode um die Geschwindigkeit des Prozessors auszurechnen?
-
Da liegen noch ein paar Prozessortakte dazwischen zwischen dem setzen der Variable auf 0 bis du wieder dort bei der Ausgabe angekommen bist. Des Weiteren kommt es ja immer drauf an wie der Compiler das evtl. optimiert, ausserdem überprüfst du damit keine Fleißkommaoperationen. IMHO ist es ein kein wirklich aussagekräftiger Test für die Prozessorgeschwindigkeit.
MfG
-
Aha, und wie würde es besser gehen? habt ihr Beispielcode?
-
Ne, das ist keine gute Lösung. Du solltest die derzeitige Systemzeit in Nano/Milli-Sekunden auslesen, dann x Berechnung durchführen (am besten so viele, dass auch eine wirklich schnelle CPU mehrere Sekunden rechnet), wieder die Systemzeit auslesen und die Anzahl für 1 Sekunde berechnen.
So hast du ein genaueres Ergebnis. Außerdem solltest du die Priorität des Prozesses hochsetzen, da dein Prozess sonst recht schnell runtergestuft wird, da bei normalen Betriebssysteme Vielrechner mit einer geringeren Priorität "bestraft" werden.