Genaue Zeitmessung in C

  1. martinibook

    martinibook Thread StarterMacUser Mitglied

    Mitglied seit:
    20.08.2005
    Beiträge:
    8.632
    Zustimmungen:
    350
    Hallo,

    Ich möchte in einem C Programm eine Zeit messen, dazu brauche ich allerdings die Zeit genauer als auf eine Sekunde. Wie geht das?

    Martin
     
    martinibook, 10.11.2006
  2. Graumagier

    GraumagierMacUser Mitglied

    Mitglied seit:
    21.08.2005
    Beiträge:
    1.458
    Zustimmungen:
    126
    gettimeofday() ist auf die Mikrosekunde genau.
     
    Graumagier, 10.11.2006
  3. autoexec.bat

    autoexec.batMacUser Mitglied

    Mitglied seit:
    21.01.2005
    Beiträge:
    2.113
    Zustimmungen:
    20
    Was für eine Zeit möchtest du denn messen? Für eine schnöde Zeitmessung mache ich das meist indem ich gettimeofday(2) zwei mal aufrufe und dann die Differenz berechne. Das ist auf die Mikrosekunde genau.

    Vielleicht reicht das ja auch für dich. :)
     
    autoexec.bat, 10.11.2006
  4. oneOeight

    oneOeightMacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.174
    Zustimmungen:
    3.889
    tickcount ist dein freund...
     
    oneOeight, 10.11.2006
  5. martinibook

    martinibook Thread StarterMacUser Mitglied

    Mitglied seit:
    20.08.2005
    Beiträge:
    8.632
    Zustimmungen:
    350
    Ich stelle mich vielleicht was blöd an, aber ich habe jetzt folgendes:

    Code:
    #include <stdio.h>
    #include <time.h>
    #include <iostream>
    
    int main ()
    	{	
    	printf("%f", gettimeofday(0));
    	}
    
    Ich bekomme dann folgende Meldungen:
    error: too few arguments to function 'int gettimeofday(timeval*, timezone*)
    'error: at this point in file

    Was mache ich da falsch?
     
    martinibook, 10.11.2006
  6. oneOeight

    oneOeightMacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.174
    Zustimmungen:
    3.889
    du kannst immer noch eine API lesen, das machst du falsch ;)

    man gettimeofday
     
    oneOeight, 10.11.2006
  7. cordney*

    cordney*MacUser Mitglied

    Mitglied seit:
    22.04.2003
    Beiträge:
    756
    Zustimmungen:
    24
    Wie die Meldung schon sagt, Du übergibst der Funktion zu wenig Argumente, schau Dir die Beschreibung der Funktion mal an.
     
    cordney*, 10.11.2006
  8. martinibook

    martinibook Thread StarterMacUser Mitglied

    Mitglied seit:
    20.08.2005
    Beiträge:
    8.632
    Zustimmungen:
    350
    Verstehe ich das richtig, dass ich der Funktion eine Struktur übergeben muss (als Zeiger), in die die Funktion dann die Werte einsetzt?
     
    martinibook, 10.11.2006
  9. oneOeight

    oneOeightMacUser Mitglied

    Mitglied seit:
    23.11.2004
    Beiträge:
    48.174
    Zustimmungen:
    3.889
    guck dir mal in der Xcode doku TickCount an, falls es das C prog für den mac ist...
    da musst du nichts als parameter nutzen...
     
    oneOeight, 10.11.2006
  10. martinibook

    martinibook Thread StarterMacUser Mitglied

    Mitglied seit:
    20.08.2005
    Beiträge:
    8.632
    Zustimmungen:
    350
    Also jetzt habe ich:

    Code:
    #include <stdio.h>
    #include <time.h>
    #include <iostream>
    #include <OSUtils.h>
    
    int main ()
    	{
    	unsigned int zeit;
    	
    	zeit = TickCount ();
    	
    	printf("%d", zeit);
    	}
    
    Allerdings sagt er mir, dass weder OSUtils.h gefunden werden kann, noch dass TickCount definiert ist. Was ist diesmal das Problem?
     
    martinibook, 10.11.2006