C++ nano time
ITWeb/개발일반 2013. 3. 12. 11:35Reference URL : http://www.users.pjwstk.edu.pl/~jms/qnx/help/watcom/clibref/qnx/clock_gettime.html
clock_gettime()
get the current time of a clock
Synopsis:
#include <time.h> int clock_gettime( clockid_t clock_id, struct timespec *tp );
Description:
The clock_gettime() function gets the current time of the clock specified by clock_id, and puts it into the buffer pointed to by tp. The only supported clock ID is CLOCK_REALTIME.
The tp parameter points to a structure containing at least the following members:
- time_t tv_sec
- The number of seconds since 1970.
- time_t tv_nsec
- The number of nanoseconds expired in the current second. This value increases by some multiple of nanoseconds, based on the system clock's resolution.
Returns:
- 0
- Success
- -1
- An error occurred. errno is set to indicate the error.
Errors:
- EINVAL
- The clock_id is not CLOCK_REALTIME.
Examples:
/* * This program calculates the time required to * execute the program specified as its first argument. * The time is printed in seconds, on standard out. */ #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <time.h> #define BILLION 1000000000L; int main( int argc, char **argv ) { struct timespec start, stop; double accum; if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) { perror( "clock gettime" ); exit( EXIT_FAILURE ); } system( argv[1] ); if( clock_gettime( CLOCK_REALTIME, &stop) == -1 ) { perror( "clock gettime" ); exit( EXIT_FAILURE ); } accum = ( stop.tv_sec - start.tv_sec ) + ( stop.tv_nsec - start.tv_nsec ) / BILLION; printf( "%lf\n", accum );
return( EXIT_SUCCESS );
[Prototype Code]
int64_t getUniqId() {
timeb tb;
ftime( &tb );
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
int64_t uniqId = tb.millitm + (tb.time * 1000) + (ts.tv_nsec * 1000000000);
return uniqId;
}