Zeitmessung in C

Gast #3171086
Lesenswert?

Hey,
ich möchte in meinem C-Programm die Zeit für eine bestimmte Funktion 
messen, habe jedoch Probleme mit der Zeitmessung.
1
#include <stdio.h>
2
#include <time.h>
3

4

5
int main( void )
6
{
7
   int i;
8
   clock_t start, ende;
9
   float zeit;
10

11
   start=clock();
12
   for(i=0;i<10000;i++)
13
   {
14
       i*i;
15
   }
16
   ende=clock();
17

18
   zeit=(float)((ende-start)/CLOCKS_PER_SEC);
19
   printf("%f", zeit);
20

21
   return 0;
22
}

Das Programm zeigt immer nur 0,000000 Sekunden an, wieso?
#3171889
Lesenswert?

Yalu X. schrieb:
> Außerdem dauern selbst bei ausgeschalteter Optimierung die paar
> Multiplikationen deutlich weniger lang als Auflösungsschritt der
> clock-Funktion.

Bei eingeschalteter Optimierung wird die gesamte Schleife verworfen und 
es bleiben zwei direkt aufeinander folgende clock()-Aufrufe übrig.

Michael Köhler schrieb:
> Stefan Ernst schrieb:
>> Weil "(ende-start)/CLOCKS_PER_SEC" eine Integer-Berechnung ist.
>
> Richtisch, start und ende müssen nach Float gecastet werden, so wird nur
> das Ergebnis nach Float gecastet und das ist 0.

Ja. Alles < 1 Sekunde wird in diesem Fall 0 ergeben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren