Probleme mit clock()



  • Liebes Forum
    Ich versuche die Zeit zu messen, wie lange es dauert, um eine Menge von Zahlen zu sortieren. Ich verwende dazu den Quicksort.

    /* Quicksort */
    long sortAndGetTimeQuicksort(int tablesize){
    	clock_t start, end;
    	//** read clock
    	start = clock();
    	//** sort
    	quicksort(table, 0, tablesize);
    	//** read end time
    	end = clock();
    	printf("Start: %g, End: %g\n", (double) start, (double) end);
    	return end - start;
    }
    

    Egal wie ich 'tablesize' wähle, die Funktion liefert mir immer null zurück. Was mach ich falsch??

    (an einer anderen Stelle dividiere ich das Resultat durch CLOCKS_PER SECOND, um die Anzahl Sekunden zu erhalten..)



  • kulturfenster schrieb:

    Was mach ich falsch??

    Wahrscheinlich ist der Zeitraum kleiner als die Auflösung. Mach mal irgendwas, was ein wenig Zeit braucht, zB:

    clock_t start, end;
    unsigned long acc, i;
    
    start = clock();
    for (i = 0, acc = 0; i < 100000000; i++)
        acc += (double)i / acc;
    printf("acc ist %ld\n", acc);
    end = clock();
    
    printf("Start: %g, End: %g\n", (double)start, (double)end);
    

    🙂



  • Genau, und gib mal CLOCKS_PER_SEC aus, bei mir ist das 1000. Andererseits, ich habe auch ein Quicksort geschrieben, und da schafft Quicksort ca. 700000 Variablen in einer Sekunde, d.h. ich merke die Zeit schon ab 1000 oder 10000 Listenelementen.


Anmelden zum Antworten