在长时间计算程序运行时间时,可以使用clock函数。clock比较通用,精度并不是特别的高,大约是10ms。但是对于长时间的计算的话,还是可以使用的。
以下是一段示例程序,将帮助你理解:
#include "stdio.h"
#include "memory.h"
#include "time.h"
#define SIZE (65535)
//使用两种方法进行内存copy
//session 1:单纯的循环拷贝,由于没有系统的优化速度会比较慢
#define DUMBCOPY for(i=0; i < SIZE; i++) destination[i] = source[i]
//session 2:使用系统优化过后的memcpy函数,速度明显较快
#define SMARTCOPY memcpy(destination, source, SIZE)
int main(int argc, char* argv[])
{
printf("Hello World!/n");
clock_t clockT1, clockT2;
char source[SIZE], destination[SIZE];
int i, j;
clockT1 = clock();
for(j=0; j<100; j++){
//SMARTCOPY;
DUMBCOPY;
}
clockT2 = clock();
printf("clock tick run: %d/n",(clockT2-clockT1));
printf("time run test by clock : %10.3f /n", (double)(clockT2-clockT1)/CLOCKS_PER_SEC);
//conclusion:在计算程序运行的时长时,可以使用clock函数
//clock函数计算的是CPU耗在本程序上的时间,也就是说中途遇到sleep,由于系统资源被释放,这段时间将
//不会计算在内。
//其次得到的返回值其实是耗在本程序上的CPU时间片的数量,即clock tick。该值需要除以CLOCKS_PER_SEC宏
//才能得到ss.mmnn格式的运行时间。在POSIX兼容系统中,CLOCKS_PER_SEC的值为1,000,000,即1MHZ
//使用clock得到的精度大约是10ms。
return 0;
}