Zeit messen



  • Hallo!

    Wie kann ich die Zeit in Millisekunden für eine bestimmte Operation messen?
    Mit "clock" komme ich irgendwie nicht weiter.
    Folgenden Code habe ich ausprobiert (MSDN)

    clock_t start, finish;
       double  duration;
    
       start = clock();
    
       // Code, der gemessen werden soll
    
       finish = clock();
       duration = (double)(finish - start) / CLOCKS_PER_SEC;
    

    Ich erhalte entweder immer 0 oder 15. Gibt es eine andere Möglichkeit?

    P.S.: Der Code definitv länger als 15 ms.



  • Da die zeit relativ ist, aber C++ nicht über relative Messfunktionen verfügt, ist dies mit der standart library nicht möglich.

    Bye, Fakten gibts keine



  • Steinchen schrieb:

    Da die zeit relativ ist, aber C++ nicht über relative Messfunktionen verfügt, ist dies mit der standart library nicht möglich.
    Bye, Fakten gibts keine

    Hmm, es muss doch eine Möglichkeit geben. Ich würde nämlich nicht so gerne die API des jeweiligen OS (Windows/Linux) nutzen, da das Programm portabel sein soll.



  • HaJo. schrieb:

    Hmm, es muss doch eine Möglichkeit geben. Ich würde nämlich nicht so gerne die API des jeweiligen OS (Windows/Linux) nutzen, da das Programm portabel sein soll.

    Es gibt aber keine derartige Funktion, d. h. du musst fast eine OS API verwenden. Vielleicht benutzt du den Präprozessor um deinen Code OS-bedingt zu kompilieren und steckst den Aufruf der API Funktion in einen Wrapper, damit das richtige Programm davon nichts mitbekommt. Unter Windows gibt es QueryPerformanceCounter; was es unter Linux usw. gibt, weiss ich nicht.



  • Naja, dann wird mir wohl nichts anderes übrig bleiben.





  • Führ einfach den Code n-mal aus und dividiere die Zeit durch n.

    Bye, TGGC (Fakten)


Log in to reply