时间函数clock()

         clock()是C/C++中的计时函数,该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者  CLOCKS_PER_SEC。

而与其相关的数据类型是clock_t,clock_t其实就是long,即长整形。

其中clock_t是用来保存时间的数据类型,typedef  long  clock_t

clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

        #define CLOCKS_PER_SEC ((clock_t)1000)

在MSDN中,查得对clock函数定义如下:

  clock_t clock(void) ;

  这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick滴答)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。

程序用例:

#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#include<windows.h>
#include <math.h>

//void sleep( clock_t wait );

void main( void )
{
   long    i = 600000L;
   clock_t start, finish;
   double  duration;
   double a;

   /* 等三秒 */
   printf( "Delay for 3 seconds\n" );
  // sleep( (clock_t)3 * CLOCKS_PER_SEC );//强制类型转换
   _sleep(3000);//这种方式也可以,所属库: stdlib.h   函数功能: 实现延时,单位为毫秒。
	    //1000毫秒是1秒。 在VS2005中如果使用该函数会有提示: 
	    //这个函数将在未来的库中舍弃,请用Sleep函数来代替。 
   //Sleep(3000);
   printf( "Done!\n" );

   /* Measure the duration of an event. */
   printf( "Time to do %ld  loops is ", i );
   start = clock();
  
   while( i-- ) {
    a = sqrt(sqrt(16.0)); a = sqrt(sqrt(16.0));
 
   }
   
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "%lf seconds\n", duration );
}

/* 等待多少毫秒的子程序 
void sleep( clock_t wait )
{
   clock_t goal;
   goal = wait + clock();
   while( goal > clock() )
      ;
}*/

 

原文链接: https://www.cnblogs.com/Lonie/archive/2011/05/28/2061411.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    时间函数clock()

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/26338

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午4:01
下一篇 2023年2月8日 上午4:01

相关推荐