Dela via


difftime, _difftime32_difftime64

Hittar skillnaden mellan två gånger.

Syntax

double difftime( time_t timeEnd, time_t timeStart ); // See note in remarks section about linkage
double _difftime32( __time32_t timeEnd, __time32_t timeStart );
double _difftime64( __time64_t timeEnd, __time64_t timeStart );

Parameterar

timeEnd
Sluttid.

timeStart
Starttid.

Returvärde

difftime returnerar den förflutna tiden i sekunder, från timeStart till timeEnd. Värdet som returneras är ett flyttal med dubbel precision. Returvärdet kan vara 0, vilket indikerar ett fel.

Anmärkningar

Funktionen difftime beräknar skillnaden mellan de två angivna tidsvärdena timeStart och timeEnd.

Det angivna tidsvärdet måste passa inom intervallet time_t. time_t är ett 64-bitars värde. Därför utökades intervallets slut från 23:59:59 januari 18, 2038, UTC till 23:59:59, 31 december 3000. Det lägre intervallet time_t är fortfarande midnatt, 1 januari 1970.

difftime är en infogad funktion som utvärderas till antingen _difftime32 eller _difftime64 beroende på om _USE_32BIT_TIME_T den har definierats. _difftime32 och _difftime64 kan användas direkt för att tvinga fram användning av en viss storlek av tidstypen.

Dessa funktioner verifierar sina parametrar. Om någon av parametrarna är noll eller negativ anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar dessa funktioner 0 och är inställda errnoEINVAL.

Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.

Anmärkning

Om du använder Windows SDK version 10.0.26100.6901 och Visual Studio 2026 eller senare tillsammans, difftime är inte längre static inline (intern länkning). I stället är inline det (extern länkning).
För att återgå till det tidigare beteendet, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 innan du inkluderar några CRT-huvuden. Som standard _STATIC_INLINE_UCRT_FUNCTIONS är värdet 0.
Den här ändringen ökar UCRT-överensstämmelsen med C++-standarden och förbättrar kompatibiliteten med C++-moduler.

Kravspecifikation

Rutin Obligatoriskt huvud
difftime <time.h>
_difftime32 <time.h>
_difftime64 <time.h>

Mer kompatibilitetsinformation finns i Kompatibilitet.

Example

// 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 );
}
Using random floating point numbers 1.04749e+038 2.01482e+038 1.72737e+038
Multiplying 2 floating point numbers 100 million times...
Program takes      3 seconds.

Se även

Stöd för matematik och flyttalsstöd
Tidshantering
time, , _time32_time64