Time.cc

Go to the documentation of this file.
00001 
00005 #include "Time.h"
00006 #include <errno.h>
00007 #ifdef _WIN32
00008 #include <windows.h>
00009 #else
00010 #ifdef __linux
00011 #include <time.h>
00012 #endif
00013 #include <sys/time.h>
00014 #endif
00015 #include <iostream>
00016 #include <cstdlib>
00017 using namespace std;
00018 
00019 static bool initialized = false;
00020 #ifdef _WIN32
00021 static LARGE_INTEGER frequency;
00022 static LARGE_INTEGER start_time;
00023 #else
00024 static struct timeval start_time;
00025 #endif
00026 
00027 void
00028 Time::initialize()
00029 {
00030   initialized=true;
00031 #ifdef _WIN32
00032   if ( !QueryPerformanceFrequency( &frequency ) ) {
00033     cerr << "QueryPerformanceFrequency failed" << endl;
00034     exit( 1 );
00035   }
00036   if ( !QueryPerformanceCounter( &start_time ) ) {
00037     cerr << "QueryPerformanceCounter failed" << endl;
00038     exit( 1 );
00039   }
00040 #else
00041   if(gettimeofday(&start_time, 0) != 0) {
00042     cerr << "gettimeofday failed: " << strerror(errno) << endl;
00043     exit( 1 );
00044   }
00045 #endif
00046 }
00047 
00048 double Time::currentSeconds()
00049 {
00050   if(!initialized)
00051     initialize();
00052 #ifdef _WIN32
00053   LARGE_INTEGER now_time;
00054   if ( !QueryPerformanceCounter( &now_time ) ) {
00055     cerr << "QueryPerformanceCounter failed" << endl;
00056     exit( 1 );
00057   }
00058   return static_cast< double >(now_time.QuadPart - start_time.QuadPart) / frequency.QuadPart;
00059 #else
00060   struct timeval now_time;
00061   if(gettimeofday(&now_time, 0) != 0) {
00062     cerr << "gettimeofday failed: " << strerror(errno) << endl;
00063     exit( 1 );
00064   }
00065   return (now_time.tv_sec-start_time.tv_sec)+(now_time.tv_usec-start_time.tv_usec)*1.e-6;
00066 #endif
00067 }

Generated on Tue Jan 29 21:34:54 2008 for specter by  doxygen 1.4.6