呵呵呵呵呵

萝莉有三好,柔体 轻音 易推倒。女神有三宝,干嘛 呵呵 去洗澡。宅男有三好:Dota 基友 破电脑。


linux中clock函数示例

linux中clock函数示例

clock 函数的返回值类型是clock_t,它除以CLOCKS_PER_SEC来得出时间,一般用两次clock函数来计算进程自身运行的时间.

ANSI clock有三个问题:
1)如果超过一个小时,将要导致溢出.
2)函数clock没有考虑CPU被子进程使用的情况.
3)也不能区分用户空间和内核空间.

所以clock函数在linux系统上变得没有意义.

代码示例:

//filename:test1.c
//gcc test1.c -o test1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main( void )
{
   long i=1000L;
   clock_t start, finish;
   double  duration;
   printf( "Time to do %ld empty loops is ", i );
   start = clock();
   while (--i){
    system("cd");
   }
   finish = clock();
   duration = (double)(finish - start) / CLOCKS_PER_SEC;
   printf( "%f seconds\n", duration );
   printf("CLOCKS_PER_SEC=%ld\n",CLOCKS_PER_SEC);
   return 0;
}

gcc test1.c -o test1

time ./test1
Time to do 1000 empty loops is 2.718750 seconds
CLOCKS_PER_SEC=1000000

real    0m4.703s
user    0m0.156s
sys     0m4.313s

(1)程序调用 system("cd");,这里主要是系统模式子进程的消耗,test1程序不能体现这一点.
(2)2.687500 seconds秒的消耗是两次clock()函数调用除以CLOCKS_PER_SEC.
(3)clock()函数返回值是一个相对时间,而不是绝对时间.
(4)CLOCKS_PER_SEC是系统定义的宏,由GNU标准库定义为1000000.

更多内容:

Linux下获取毫秒纳秒时间精度的深入分析
BCB获取CPU的时钟周期数RDTSC的方法
通过机器指令RDTSC读取TSC时间戳代码
linux中使用getrusage获取系统资源的占用信息
fopen mode中a与a+区别

本文链接地址:http://www.hehehehehe.cn/i/819.html