gettimeofday() Methode in C



  • Hey Leute,
    Ich bin absoluter Anfänger wenn es um die Sprache C geht und habe folgendes Problem:

    Ich möchte die Zeit messen, die das Programm benötigt eine Methode auszuführen und dann noch einmal die Zeit messen, die das Programm für die gleiche Methode mit geänderter Ausgangslage benötigt.

    Hier mein Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/time.h>
    
    main(){
    
            //Messung 1
    
    	struct time  t1, t2;
    	gettimeofday(&t1, NULL);    
    
            sum(t,i);
    
    	gettimeofday(&t2, NULL);  
    	printf ("Zeit 1: %f Sekunden\n",
    	     (double) (t2.tv_usec - t1.tv_usec) / 1000000 +
    	     (double) (t2.tv_sec - t1.tv_sec));
    
        struct time t3, t4;     
        gettimeofday(&t3, NULL);    
    
        //Messung 2
        shuffle(i, sizeof(i));
        sum(t,i);
        gettimeofday(&t4, NULL);  
        printf ("Zeit 2: %f Sekunden\n",
    	 (double) (t4.tv_usec - t3.tv_usec) / 1000000 +
    	 (double) (t4.tv_sec - t3.tv_sec));
    }
    

    Hierfür bekomme ich jetzt den Fehler "`gettimeofday' undeclared (first use this function)". Habe bisschen im Internet geschaut und viel darüber gelesen, dass gettimeofday() wohl Probleme unter Windows bzw mit Dec-c++ macht und will eigentlich nur wissen, ob ich vom Prinzip her alles richtig gemacht hab. Also würde es sich kompilieren lassen, wenn ich das ganze unter Linux o.ä. (steht mir leider momentan nicht zur Verfügung) laufen lassen würde? Oder fehlt da irgendwas. Liegt es vielleicht an mir und nicht am Compiler, dass ich da nen Fehler bekomme?

    Was genau sum() macht ist hier natürlich nebensächlich (deswegen hab ich den Teil mal aus Gründen der Übersichtlichkeit rausgelassen - genauso wie die Deklarationen der Variablen in der main Methode).



  • gettimeofday ist kein ANSI und im Posix als obsolete markiert. Nimm clock, das ist Ansi und sollte daher besser funken.

    mfg Martin



  • Danke für die Antwort, aber wie würde ich das mit clock denn machen?

    Und würde mein Code so wie er jetzt ist denn korrekt ablaufen? Mir wurde gettimeofday() als Methode nämlich mehr oder weniger vorgeschrieben.



  • clock_t	startTime = clock();
    
    	tuwasauchimmer();
    
    	clock_t execTime = clock() - startTime;
    

Anmelden zum Antworten