Function implementation of C ++ clock ()

Source: Internet
Author: User

In the C ++ programming language, there are many specific function applications that can help us implement many different specific functions and facilitate the actual development of programmers. For example, the C ++ clock () function mainly helps us implement the timing function. The related data type is clock_t. In MSDN, the clock function is defined as follows:

 
 
  1. clock_t clock( void );  

This function returns the number of CPU clock timer units clock tick between "enabling this program process" and "calling the C ++ 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:

 
 
  1. #ifndef _CLOCK_T_DEFINED   
  2. typedef long clock_t;   
  3. #define _CLOCK_T_DEFINED   
  4. #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:

 
 
  1. #define CLOCKS_PER_SEC ((clock_t)1000) 

We can see that every 1‰ seconds, 1 millisecond), the value returned by calling the C ++ clock () function is increased by 1. For example, you can use the formula clock ()/CLOCKS_PER_SEC to calculate the running time of a process:

 
 
  1. void elapsed_time()   
  2. {   
  3. 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:

 
 
  1. # Include "stdio. h"
  2. # Include "stdlib. h"
  3. # Include "time. h"
  4. Int main (void)
  5. {
  6. Long I = 0000000l;
  7. Clock_t start, finish;
  8. Double duration;
  9. /* Measure the duration of an event */
  10. Printf ("Time to do % ld empty loops is", I );
  11. Start = clock ();
  12. While (I --);
  13. Finish = clock ();
  14. Duration = (double) (finish-start)/CLOCKS_PER_SEC;
  15. Printf ("% f seconds" n ", duration );
  16. System ("pause ");
  17. }

On the author's machine, the running result is as follows:

 
 
  1. Time to do 10000000 empty loops is 0.03000 seconds  

The preceding section describes the application of the C ++ clock () function. 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 as larger, so that the timing accuracy 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.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.