C语言函数clock()

C语言函数clock()  功 能: 返回处理器调用某个进程或函数所花费的时间。
  用 法: clock_t clock(void);
  说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以 CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。具体见第一个例子。
  程序例1:(TC下运行通过)
  #include <stdio.h>
  #include <time.h>
  int main(void)
  {
  clock_t start, end;
  start = clock();
   delay(2000);
  end = clock();
  printf("The time was: %fn", (double)(end - start) / CLK_TCK);
  return 0;
  }
  CLK_TCK 定义在TC中的time.h中:#define CLK_TCK 18.2。在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。实际上在VC6.0中CLK_TCK已完全等同于CLOCKS_PER_SEC。
  在VC中delay用 Sleep()来代替,其头文件是 windows.h
  程序例2:(VC6.0下运行通过)
  #include <stdio.h>
  #include <time.h>
  #include<windows.h>
  int main(void)
  {
  clock_t start, end;
  start = clock();
  Sleep(2000);
  end = clock();
  printf("The time was: %dn", (end - start) / CLK_TCK);//注意是%d,不再是%f
  return 0;
  }
  程序例3:(VC6.0下运行通过)
  #include "stdio.h"
  #include "stdlib.h"
  #include "time.h"
  int main( void )
  {
  long i = 10000000L;
  clock_t start, finish;
  double duration;
  
  printf( "Time to do %ld empty loops is ", i );
  start = clock();
  while( i-- ) ;
  finish = clock();
  duration = (double)(finish - start) / CLK_TCK; //CLK_TCK在VC6.0中可以用CLOCKS_PER_SEC
  printf( "%f secondsn", duration );
  system("pause");
  return 0;
  }

Linux命令

   功能说明:编排文本文件。
   语 法:fmt [-cstu][-p<列起始字符串>][-w<每列字符数>][--help][--version][文件...]
   补充说明:fmt指令会从指定的文件里读取内容,将其依照指定格式重新编排後,输出到标准输出设备。若指定的文件名为"-",则fmt指令会从标准输入设备读取数据。
   参 数
  -c或--crown-margin 每段前两列缩排。
  -p<列起始字符串>或-prefix=<列起始字符串> 仅合并含有指定字符串的列,通常运用在程序语言的注解方面。
  -s或--split-only 只拆开字数超出每列字符数的列,但不合并字数不足每列字符数的列。
  -t或--tagged-paragraph 每列前两列缩排,但第1列和第2列的缩排格式不同。
  -u或--uniform-spacing 每个字符之间都以一个空格字符间隔,每个句子之间则两个空格字符分隔。
  -w<每列字符数>或--width=<每列字符数>或-<每列字符数> 设置每列的最大字符数。
  --help 在线帮助。
  --version 显示版本信息。
 
 

自己没事可以看看程序的运行时间,第一个想到的还是以前会的clock() ,先把代码扔这。

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

int main()
{
clock_t begin, end;
double  cost;
begin = clock();
/* 程序代码 */
end = clock();
cost = (double)(end - begin) / CLOCKS_PER_SEC;
printf("%lf seconds\n", cost);
system("pause");
return 0;
}

这个函数返回开启进程和调用clock()之间的的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock),每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。

但是是我感觉这段程序有两个问题,很不爽。第一是精度,只能精确到1ms,低于1ms的程序全部输出0ms,因为WinNT的时间精度最小是1ms;第二是准确度,printf()的速度太快了,基本上和clock()的速度一样,所以误差很大很大。。。

不晓得在Win下怎么才能提高计算精度。。。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值