计算程序运行时间函数的选择

本文探讨在Ubuntu环境下,使用gcc编译器时,如何通过clock()和gettimeofday()函数来衡量C/C++程序的运行时间。clock()函数在单进程程序中提供准确的计时,但在多线程中可能产生误导,不包括sleep延时。gettimeofday()函数则能精确到微妙级别,适合多线程应用,能分别计算每个线程的执行时间。
摘要由CSDN通过智能技术生成

这里主要是在ubuntu系统中编写c/c++应用, 编译器选择gcc

关于clock()函数

这个函数返回从当前程序开始运行到调用函数所经历的clock tick数量, 需要添加time.h头文件, 需要注意的是这个函数在单进程程序中计算的时间比较准确, 在计算多线程应用每个线程执行时间时, 经过试验, 会对多核心并行始终做累加,致使打印时间被看成程序是串行执行的, 此外应用的sleep函数延时时间不会产生clock tick所以使用该函数计算的程序执行时间也不包含sleep睡眠时间.

在使用这个函数的使用要配合宏CLOCKS_PER_SEC使用, 示例如下

#include <time.h>

clock_t start =0, finish = 0;

start = clock();

...(程序执行代码)

finish = clock();

cout << "total time: " << (double)(finish - start)/CLOCKS_PER_SEC << endl;


关于gettimeofday函数

这个函数记录的是系统时钟, 能够将多线程应用执行时间进行分开计算, 时间精度微妙级,使用时添加sys/time.h, stdlib.h, unistd.h头文件, 函数定义为int gettimeofday(struct timeval *tv, struct timezone *tz);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值