std::clock
From Cppreference
C++ Standard Library | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Utilities library | ||||||||||||||||||||||||||||||||||||||||
Date and time utilities | ||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||
C-style date and time utilities | ||||||||||||||||||||||||||||||||||||||||
Defined in header <ctime>
|
||
clock_t clock( void );
|
||
Returns the approximate processor time used by the process since the beginning of an implementation-defined era related to the program's execution. To convert result value to seconds divide it by CLOCKS_PER_SEC. Because the beginning of the std::clock era does not have to coincide with the start of the program, only the difference between two values returned by different calls to std::clock is meaningful. If the CPU is shared by other processes, std::clock time may advance slower than wall clock. If the current process is multithreaded and more than one execution core is available, std::clock time may advance faster than wall clock.
Contents |
[edit] Parameters
(none)
[edit] Return value
Processor time used by the program so far or (clock_t)(-1) if that information is unavailable.
[edit] Notes
On POSIX-compatible systems, clock_gettime with clock id CLOCK_PROCESS_CPUTIME_ID offers better resolution.
[edit] Example
This example demonstrates the difference between clock() time and real time
#include <iostream> #include <chrono> #include <ctime> #include <thread> // the function f() does some time-consuming work void f() { volatile double d; for(int n=0; n<10000; ++n) for(int m=0; m<10000; ++m) d += d*n*m; } int main() { std::clock_t c_start = std::clock(); auto t_start = std::chrono::high_resolution_clock::now(); std::thread t1(f); std::thread t2(f); // f() is called on two threads t1.join(); t2.join(); std::clock_t c_end = std::clock(); auto t_end = std::chrono::high_resolution_clock::now(); std::cout << "CPU time used: " << 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC << " ms\n"; std::cout << "Wall clock time passed: " << std::chrono::duration_cast<std::chrono::milliseconds>(t_end - t_start).count() << " ms\n"; }
Output:
CPU time used: 1520 ms Wall clock time passed: 769 ms
[edit] See also
|
converts a tm object to a textual representation (function) |
|
|
returns the current time of the system as time since epoch (function) |