difftime, _difftime32, _difftime64
Sucht den Unterschied zwischen zweimal.
double difftime(
time_t timer1,
time_t timer0
);
double _difftime32(
__time32_t timer1,
__time32_t timer0
);
double _difftime64(
__time64_t timer1,
__time64_t timer0
);
Parameter
timer1
Beenden Zeit.timer0
Anfangszeit.
Rückgabewert
difftime gibt die verstrichene Zeit in Sekunden, von timer0 in timer1 zurück. Der zurückgegebene Wert ist eine doppelt genaue Gleitkommazahl. Der Rückgabewert kann 0 und gibt einen Fehler an.
Hinweise
Die difftime-Funktion berechnet den Unterschied zwischen den zwei angegebenen Zeitwerten timer0 und timer1.
Der angegebene Zeitwert muss innerhalb des Bereichs von time_t anpassen. time_t ist ein 64-Bit-Wert. Daher wurde das Ende des Bereichs von 03:14 erweitert: Am 7. Januar 19 2038 bis 23:59: 59 3000 am 31. Dezember. Der untere Bereich von time_t ist, am 1. Januar 1970 noch Mitternacht.
difftime ist eine Inlinefunktion, der entweder auf _difftime32 oder _difftime64 ausgewertet wird abhängig davon, ob _USE_32BIT_TIME_T definiert wird. _difftime32 und _difftime64 können direkt verwendet werden, um die Verwendung einer bestimmten Größe des Zeittyps zu erzwingen.
Diese Funktionen überprüfen ihre Parameter. Wenn entweder von Parametern null oder negativ ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, geben diese Funktionen festgelegtem 0 und errno auf EINVAL ergibt.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
difftime |
<time.h> |
_difftime32 |
<time.h> |
_difftime64 |
<time.h> |
Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Beispiel
// crt_difftime.c
// This program calculates the amount of time
// needed to do a floating-point multiply 100 million times.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
double RangedRand( float range_min, float range_max)
{
// Generate random numbers in the half-closed interval
// [range_min, range_max). In other words,
// range_min <= random number < range_max
return ((double)rand() / (RAND_MAX + 1) * (range_max - range_min)
+ range_min);
}
int main( void )
{
time_t start, finish;
long loop;
double result, elapsed_time;
double arNums[3];
// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );
arNums[0] = RangedRand(1, FLT_MAX);
arNums[1] = RangedRand(1, FLT_MAX);
arNums[2] = RangedRand(1, FLT_MAX);
printf( "Using floating point numbers %.5e %.5e %.5e\n", arNums[0], arNums[1], arNums[2] );
printf( "Multiplying 2 numbers 100 million times...\n" );
time( &start );
for( loop = 0; loop < 100000000; loop++ )
result = arNums[loop%3] * arNums[(loop+1)%3];
time( &finish );
elapsed_time = difftime( finish, start );
printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );
}