The C ++ programming language is widely used and has powerful functions. In the previous article, we have briefly introduced the basic concepts of C ++ time. Now, we will further interpret the specific operations of C ++ timing so that you can gain more knowledge.
- How to Implement C ++ Polymorphism
- C ++ static member initialization FAQs
- Basic concepts of C ++ type conversion
- C ++ compiler command list Summary
- C ++ basic concepts of time
The function used in the C ++ timing operation is clock (), and the related data type is clock_t. In MSDN, the clock function is defined as follows:
Clock_t clock (void );
This C ++ timing function returns the number of CPU clock timing units clock tick between "starting this program process" and "calling clock () function in the program, in MSDN, it is called the wall clock time wal-clock ). Clock_t is the data type used to save the time. In the time. h file, we can find its definition:
- #ifndef _CLOCK_T_DEFINED
- typedef long clock_t;
- #define _CLOCK_T_DEFINED
- #endif
Clock_t is a long integer. In the time. h file, a constant CLOCKS_PER_SEC is also defined to indicate the number of clock units in one second. Its definition is as follows:
# Define CLOCKS_PER_SEC (clock_t) 1000)
You can see that every 1‰ seconds, 1 millisecond), call clock) the value returned by the function is increased by 1. Here is an example of C ++ timing. You can use the formula clock ()/CLOCKS_PER_SEC to calculate the running time of a process itself:
- void elapsed_time()
- {
- printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);
- }
Of course, you can also use the clock function to calculate how much time your machine spends running a loop or processing other events:
- # Include "stdio. h"
- # Include "stdlib. h"
- # Include "time. h"
- Int main (void)
- {
- Long I = 0000000l;
- Clock_t start, finish;
- Double duration;
- /* Measure the duration of an event */
- Printf ("Time to do % ld empty loops is", I );
- Start = clock ();
- While (I --);
- Finish = clock ();
- Duration = (double) (finish-start)/CLOCKS_PER_SEC;
- Printf ("% f seconds \ n", duration );
- System ("pause ");
- }
On the author's machine, the running result after the C ++ timing operation is as follows:
Time to do 10000000 empty loops is 0.03000 seconds
We can see that the length of the clock timing unit is 1 millisecond, and the timing accuracy is also 1 millisecond. Can we change the definition of CLOCKS_PER_SEC and define it larger, so that the timing accuracy of C ++ is higher? By trying, you will find that this is not the case. In standard C/C ++, the minimum unit of time is one millisecond.