Performance-Test - Wie zählt man Cpu cycles?



  • hallo.

    bin neu hier und total performance-geil. habe daher eine frage, die mich schon seit langer zeit quält: wie kann man die anzahl der cpu cycles zählen, die ein funktionsaufruf (ver-)braucht? geht das überhaupt? gibt es tools dafür?



  • Man kann nicht genau sagen, wie lange eine Funktion braucht, denn es kommt z.B. darauf an, ob zu lesende Daten schon im Cache liegen.
    Du kannst es mal mit dem Maschinenbefehl RDTSC versuchen. Der liefert dir die Anzahl der Taktzyklen seit dem letzten Reset. Das machst du dann zweimal und ziehst die Werte voneinander ab.
    Am besten machst du das sehr, sehr oft, schmeißt die Ausreißer raus und mittelst dann.



  • damit: DWORD GetTickCount(VOID), die speichert die ticks seit dem windoof läuft.

    DWORD start, end, elapsed:
    start = GetTickCount( );
    
    // funktions aufruf
    
    end = GetTickCount( );
    
    elapsed = end - start; // und so viel zeit is vergangen( angaben in ms )
    

    Gruß Tobi.



  • danke, der RDTSC-befehl ist genau das, was ich gesucht habe!


Anmelden zum Antworten