程序计时

本文探讨了C/C++中不同计时方法,包括time_t time()、clock_t clock(),以及Windows特有的timeGetTime()和高精度计时,还有Linux平台的计时函数。通过实例展示了各个函数的用法和结果,如timeGetTime()的毫秒级计时。同时,提到了Linux Shell内置的time命令用于程序计时。
摘要由CSDN通过智能技术生成
程序计时
一、基本概念
1、时间表示
Coordinated Universal Time(UTC):世界协调时间
Calendar Time:日历时间,即从一个标准时间点到此时的时间所经过的秒数。该标准时间点因编译器而异,但对编译系统而言标准时间点不变。该编译系统中的时间对应的日历时间都通过该标准时间点衡量,故日历时间是“相对时间”。一般,标准时间点指定为1970年1月1日0时0分0秒。日历时间与时区无关。
Epoch:时间点。时间点在标准C/C++中是一个整数(time_t),它用此刻的时间和标准时间点相差的秒数(即日历时间)来表示。目前大部分UNIX系统采用32位记录时间,正值表示为1970年以后,负值则表示1970年以前。可简单地估算出所能表达的时间范围:1970±((231-1)/3600/24/365)≈[1901,2038]年。为表示更久远的时间,某些编译器厂商引入64位甚至更长的整型数来保存日历时间。


2、进程时间
CPU时间,用以度量进程使用的中央处理器资源。进程时间以时钟滴嗒计算,通常使用三个进程时间值:实际时间(Real)、用户时间(User)和系统时间(Sys)。
实际时间:进程开始执行到完成所经历的挂钟时间,包括其他进程使用的时间片和本进程耗费在阻塞(如等待I/O操作完成)上的时间。该时间对应秒表(stopwatch)直接测量。
用户时间:进程执行用户态代码(内核外)耗费的CPU时间,仅统计该进程执行时实际使用的CPU时间,而不计入其他进程使用的时间片和本进程阻塞的时间。

系统时间:进程在内核态运行所耗费的CPU时间。


二、计时方式
1、通用的C/C++
(1) time_t time(time_t *timer)
以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时此刻所经过的秒数
eg:

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

using std::cout;
using std::endl;

void fun();

int main(int argc, char* argv[])
{
	time_t timeBegin, timeEnd;
	timeBegin = time(NULL);
	fun();
	timeEnd = time(NULL);
	printf("%I64ds\n", (timeBegin - timeEnd));
	return 0;
}

void fun()
{
	long i = 0;
	for (; i < 100000000; i++)
	{
	}
}
其运行结果:
0s


(2) clock_t clock(void)
进程启动到调用函数时所经过的CPU时钟计时单元(clock tick)数

eg:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值