Probleme mit Zeitfunktionen



  • Hallo,

    ich muss Performancemessungen machen und hab drei numerische Algorithmen, die ich miteinander vergleichen soll.

    Ich hab <ctime> inkludiert und mache es folgendermaßen:

    ...
    	// Zeitmessung (in Sekunden) - Start
    	clock_t start = clock();
    	cout
    
    	while (...) {
    // Jacobi-Verfahren
    
    	}
    
    	// Zeitmessung (in Sekunden) - Ende
    	clock_t ende = clock();
    
    	double gesamt = difftime(ende,start);
    
    	cout << "Start: " << start << endl;
    	cout << "Ende: " << ende << endl;
    
    	return countIteratios;
    }
    

    Allerding bekomme ich immer Folgendes:

    Start: 0
    Ende: 0
    

    Was soll ich tStart: 0
    Ende: 0
    Warum bekomme ich immer 0en angezeigt?Fange ich etwas falsch ab? Vorher hatte ich die difftime()-Funktion benutzt und das Ergebnis durch CLOCKS_PER_SEC geteilt, aber hab trotzdem 0 herausbekommen. Was mache ich falsch?



  • Du kannst mal gettimeofday ausprobieren.



  • Ah, danke. Ich haber aber ein merkwürdiges Ergebnis:

    // Zeitmessung - Start
      	timeval start, end;
     	gettimeofday(&start, 0);	// Strukt für Start, Zeitzone
    
    	while (...) {
    // Jacobi
    	}
    
    	// Zeitmessung - Ende
    	gettimeofday(&end, 0);
    
    	cout << "Sekunden und Mikrosekunden am Anfang: " << start.tv_sec << ':' << start.tv_usec << endl;
    	cout << "Sekunden und Mikrosekunden am Ende: " << end.tv_sec << ':' << end.tv_usec << endl;
    

    Ich hab mehr Sekunden als Mikrosekunden??? Die Mikrosekundenanzahl "start.tv_usec" müsste doch viel größer sein als die Sekundenanzahl "start.tv_sec" oder sehe ich gerade etwas vollkommen falsch???



  • Es sind 8 Stunden 4 Minuten 30 Sekunden und 4 Mikrosekunden vergangen seit der letzten Ansage.



  • Achso. Wahrscheinlich wirds gemacht, weil die Zahl doch einfach zu groß wäre, sie in Mikrosekunden anzuzeigen, oder?

    Kann ich eigentlich trotzdem zwei miteinander vergleichen, also:

    long diff = end.tv_usec - start.tv_usec;
    

    , auch wenn sie ausgeschrieben das bedeuten, was "Zeitansage" gesagt hat?


Anmelden zum Antworten