I am wanting to print the running time of my functions. For some reason my timer always returns 0. Can anyone tell me why?
double RunningTime(clock_t time1, clock_t time2)
{
double t=time1 - time2;
double time = (t*1000)/CLOCKS_PER_SEC;
return time;
}
int main()
{
clock_t start_time = clock();
// some code.....
clock_t end_time = clock();
std::cout << "Time elapsed: " << double(RunningTime(end_time, start_time)) << " ms";
return 0;
}
I attempted to use gettimeofday and it still returned 0.
double get_time()
{
struct timeval t;
gettimeofday(&t, NULL);
double d = t.tv_sec + (double) t.tv_usec/100000;
return d;
}
int main()
{
double time_start = get_time();
//Some code......
double time_end = get_time();
std::cout << time_end - time_start;
return 0;
}
Also tried using chrono and it gave me all kinds of build errors:
- error: #error This file requires compiler and library support for the
upcoming ISO C++ standard, C++0x. This support is currently
experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options. - warning: 'auto' will change meaning in C++0x; please remove it
- error: ISO C++ forbids declaration of 't1' with no type error: 'std::chrono' has not been declared
error: request for member 'count' in '(t2 - t1)', which is of non-class type 'int'
int main() { auto t1 = std::chrono::high_resolution_clock::now();
//Some code...... auto t2 = std::chrono::high_resolution_clock::now(); std::cout << "Time elapsed: " << std::chrono::duration_cast<std::chrono::milliseconds>(t2-t1).count() << " milliseconds\n"; return 0; }
<chrono>if you want good resolution. You can easily specify milliseconds for the units instead of calculating it as well. - chrisgettimeofday()for high-resolution time (microseconds). - gavinbclock_gettimeon Linux (usingCLOCK_MONOTONIC_HR), orgethrtimefor most other UNIX variants, andQueryPerformanceCounteron Windows. - jxh<chrono>? I googled it real quick but can't quickly figure out how to put it in my program without causing build errors. I usedstd::chrono::time_point<Clock> time_point- Jmh2013-std=c++11or-std=c++0xflag in your compiler options. - chris