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下怎么才能提高计算精度。。。