Share via


difftime, _difftime32, _difftime64

Menemukan perbedaan antara dua kali.

Sintaks

double difftime( time_t timeEnd, time_t timeStart );
double _difftime32( __time32_t timeEnd, __time32_t timeStart );
double _difftime64( __time64_t timeEnd, __time64_t timeStart );

Parameter

timeEnd
Waktu berakhir.

timeStart
Waktu mulai.

Nilai hasil

difftime mengembalikan waktu yang berlalu dalam detik, dari timeStart ke timeEnd. Nilai yang dikembalikan adalah angka floating-point presisi ganda. Nilai yang dikembalikan mungkin 0, menunjukkan kesalahan.

Keterangan

Fungsi ini difftime menghitung perbedaan antara dua nilai timeStart waktu yang disediakan dan timeEnd.

Nilai waktu yang disediakan harus sesuai dalam rentang time_t. time_t adalah nilai 64-bit. Dengan demikian, akhir rentang diperpanjang dari 23:59:59 18 Januari 2038, UTC menjadi 23:59:59, 31 Desember 3000. Kisaran time_t bawah masih tengah malam, 1 Januari 1970.

difftime adalah fungsi sebaris yang mengevaluasi ke salah satu _difftime32 atau _difftime64 tergantung pada apakah _USE_32BIT_TIME_T ditentukan. _difftime32 dan _difftime64 dapat digunakan langsung untuk memaksa penggunaan ukuran tertentu dari jenis waktu.

Fungsi-fungsi ini memvalidasi parameternya. Jika salah satu parameter adalah nol atau negatif, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini mengembalikan 0 dan diatur errno ke EINVAL.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Rutin Header yang diperlukan
difftime <time.h>
_difftime32 <time.h>
_difftime64 <time.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// 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.

Baca juga

Dukungan matematika dan titik mengambang
Manajemen waktu
time, _time32, _time64