Linux平台下的计时函数总结

本文介绍如何在Linux环境中使用clock(), time(), 和gettimeofday()三种函数来测量C程序的运行时间。通过示例代码展示了不同函数的精度及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   在Linux 环境下,计算一个循环或者处理事件类事情花费多长时间计算C程序运行的时间,可以通过以下三个函数来实现:clock(),time(),gettimeofday()
示例:

	long i = 100000000L;
	/* clock函数持续的时间*/
	clock_t start, finish;
	double duration;	
	start = clock();
	cout << i << "loops is";
	while(i--);
	finish = clock();
	duration = ((double)(finish - start) / CLOCKS_PER_SEC);
	    
	cout << "Clock()  " << duration << "seconds"<<endl;

	/* gettimeofday函数持续的时间*/
	 i = 100000000L;
	struct  timeval  start1;
	struct  timeval  end1;
	unsigned long timer1;	
	gettimeofday(&start1, NULL);
	while (i--);
	gettimeofday(&end1, NULL);
	int speedtime = (end1.tv_sec * 1000000 + end1.tv_usec) - (start1.tv_sec * 1000000 + start1.tv_usec);	
	cout << "gettimeofday = "<< speedtime << endl;
		 
	/* time函数持续的时间*/
	 i = 100000000L;
	 time_t t1, t2;
	 time(&t1);
	 while (i--);
	 time(&t2);
	 cout << "time()  " << t2-t1 << endl;

1.clock()

获取时间精度:毫秒
头文件: time.h
函数原型: clock_t clock( void );
返回值:
成功:返回从“开启这个程序进程”到“程序中调用clock()函数”时这之间的 CPU 时钟计时单元(clock tick)数。
失败:-1 表示无法得到处理器时间。
注意:
1)程序中遇到sleep()函数消耗的时间不含在内,因为此时CPU资源被释放。
2)函数返回值为CPU时间片数量(clock tick)值,该值必须除以CLOCKS_PER_SEC这个宏值得到秒为单位的运行时间

在 POSIX 兼容系统中,CLOCKS_PER_SEC的值为 1,000,000 的,也就是 1MHz。
在这里插入图片描述

  在 Windows 系统下的 VC2019 中,其定义为:
在这里插入图片描述
  这表示硬件滴答 1000 下是 1 秒,也即可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加 1。

2.time()

  获取时间精度:
  函数解释:获取当前的日历时间(Calendar Time)。即从标准时间点(1970年1月1日0时0分0秒)运行到此时时间经过的秒数。
  函数原型
  time_t time(time_t * timer);

3.gettimeofday()函数

  时间精度:微秒
  函数原型:gettimeofday()

#include<sys/time.h>
int gettimeofday(struct timeval*tv, struct timezone *tz )

  参数解析:**gettimeofday()会把目前的时间用 tv 结构体返回,当地时区的信息则放到 tz 所指的结构中。其结构体定义为:
在这里插入图片描述
  返回值
情况1:tv 或者 tz 都可以为空。如果为空则就不返回其对应的结构体。函数执行成功后返回 0,失败后返回 -1,错误代码存于 errno 中
情况2:第二个参数一般都为空,因为我们一般都只是为了获得当前时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值