CPU-Zeit von EXE-Programm exakt unter Windows messen?



  • Du wolltest doch die CPU Zyklen unter Windows haben? Dafür hab ich doch schon eine Lösung gepostet!?



  • Es gibt das Built-in time der Bash und das time aus /usr/bin/time oder so. Welches meinst du?



  • Ja, ich weiß. Funktioniert diese Funktion auch unter ANSI-C. Ich benutze gcc-4.6.1. Linux habe ich nur mal als Vergleich genommen und da wird CPU-Zeit und Elapsed-Zeit angegeben, die vom Wert her bei mir beide identisch sind.


  • Mod

    kjesse schrieb:

    Ja, ich weiß. Funktioniert diese Funktion auch unter ANSI-C. Ich benutze gcc-4.6.1. Linux habe ich nur mal als Vergleich genommen und da wird CPU-Zeit und Elapsed-Zeit angegeben, die vom Wert her bei mir beide identisch sind.

    Ich verstehe nicht, was dich daran so stört. Wenn dein Programm dein System zu 100% auslastet, dann kommst du fast beliebig nahe an identische Zeiten für beide Werte. Ein paar Mikrosekunden IO gehen dann in der Rundung verloren.



  • Ich lasse einen sehr schnellen, selbst geschriebenen Kompressor/Dekompressor für große Dateien (Millionen Bytes) laufen und beim Schreiben müsste doch ein messbarer IO-Effekt da sein. Bei Windows/Linux sind die beiden Zeiten gleich, unter dem IBM Mainframe sehe ich einen Unterschied.


  • Mod

    Dann gibt's 2 Möglichkeiten:
    1. Deine Erwartungen sind falsch.
    2. Du benutzt das Kommando falsch.
    Die dritte Möglichkeit, dass der Befehl an sich fehlerhaft arbeitet darf wohl erst einmal ausgeschlossen werden, bis die ersten beiden Punkte nicht ganz sicher geklärt sind. Da wir das alles nicht von hier aus beurteilen können, geht der Fall erst einmal wieder an dich.



  • Ja, ich weiß. Funktioniert diese Funktion auch unter ANSI-C.

    /usr/bin/time ist ein Programm. Mit den noetigen Parametern sagt es dir aaaaalllllles, IO, CPU, Cache, .... .



  • Ich benutze in meinem C-Programm /usr/bin/time. Ich habe gelesen clock() würde die CPU-Zeit und eine andere Funktion die elapsed time wiedergeben. Der Befehl time -p command unter Linuxprompt ergibt das gleiche Ergebnis wie mein C-Programm und zeigt auch CPU-Zeit und Elapsed Time an. Falls clock() richtig arbeitet, würde das heißen, dass mein Programm kaum auf I/O wartet d.h. CPU-Zeit und Elapsed Time sind ähnlich. Mein Rechner hat einen Core i7-760 falls das hilft.



  • Sorry. Ich meinte i7-860 (4 Kerne / 8 "virtuelle" Kerne durch STM)



  • Tja, das time -p command unter Linuxprompt ist wahrscheinlich das Built-in der Shell. Leider bietet das eben recht wenig. Sicher gibt es das auch fuer Windows. Aber wahrscheinlich rede ich gerade gegen die Wand. Denn gemessen an der Ausgangsfrage weisst du einfach nicht was du willst verursacht durch Unkenntnis.

    Btw: "8 virtuelle Kerne durch STM" was bedeutet STM in diesem Fall? Vielleicht?


Anmelden zum Antworten