C/C++中计算程序运行时间
来源:互联网 发布:数据质量控制系统 编辑:程序博客网 时间:2024/05/16 05:48
以前经常听人提起如何计算程序运行时间,给出一系列函数,当时没有注意,随便选了clock()最简单的方式进行计算。等到真正需要检测程序性能提升了多少,才发现这里面有很多要注意的地方。
最常用的的方式:
#include
time_t start = clock();
time_t end = clock();
printf("the running time is : %f\n", double(end -begin)/CLOCKS_PER_SEC);
clock()计算的是CPU执行耗时,注意是CPU!如果有多个核并行,最后的结果是每个CPU上运算时间的总和!想要精确到毫秒,可以double(end -begin)*1000/CLOCKS_PER_SEC
一般来说,只要求精确到秒的话,time是很好使的
- #include
<</span>stdio.h> - #include
<</span>time.h> -
- int
main(){ -
t_start, t_end; -
= time(NULL); -
-
= time(NULL); -
difftime(t_end,t_start)) ; -
0; - }
如果要让程序休眠3秒,Windows使用Sleep(3000),Linux使用sleep(3),即Windows的Sleep接口的参数的单位是毫秒,Linux的sleep接口的参数的单位是秒。
如果需要精确到毫秒,以上程序就发挥不了作用,如果在Java要达到这要求就很简单了,代码如下所示:
下载: Time.java
- public
class Time { -
static void main(String[] args) { -
{ -
startTime = System.currentTimeMillis(); -
-
endTime = System.currentTimeMillis(); -
" + (endTime- startTime)+ "ms "); -
catch (InterruptedException e) { -
-
-
- }
通过Google找了一些资料后,发现C语言里没有标准的接口可以获得精确到毫秒的时间,都会调用到与操作系统相关的API,下面会分别介绍在Linux和Windows系统下的多种实现方法,希望对大家有帮助。
Linux系统
使用gettimeofday接口:
下载: gettimeofday.c
- #include
<</span>stdio.h> - #include
<</span>sys/time.h> -
- int
main() { -
timeval start, end; -
& start,NULL ); -
-
& end,NULL ); -
timeuse = 1000000* (end.tv_sec - start.tv_sec) + end.tv_usec- start.tv_usec; -
timeuse); -
0; - }
gettimeofday能得到微秒数,比毫秒还要更精确。
使用ftime接口:
下载: ftime.c
- #include
<</span>stdio.h> - #include
<</span>sys/timeb.h> -
- long
long getSystemTime() { -
timeb t; -
-
1000 * t.time+ t.millitm; - }
-
- int
main() { -
long start=getSystemTime(); -
-
long end=getSystemTime(); -
-
end-start); -
0; - }
Windows系统
使用GetTickCount接口:
下载: GetTickCount.c
- #include
<</span>windows.h> - #include
<</span>stdio.h> -
- int
main() { -
start, stop; -
= GetTickCount(); -
-
= GetTickCount(); -
stop - start); -
0; - }
Windows系统下有些编译器使用printf输出64位整数参数要使用%I64d,比如VC。
使用QueryPerformanceX接口:
下载: QueryPerformance.c
- #include
<</span>windows.h> - #include
<</span>stdio.h> -
- int
main(){ -
li; -
start, end, freq; -
y (&li); -
= li.QuadPart; -
-
= li.QuadPart; -
-
-
= li.QuadPart; -
useTime = (int)((end- start)* 1000/ freq); -
useTime); -
0; - }
使用GetSystemTime接口:
下载: GetSystemTime.c
- #include
<</span>windows.h> - #include
<</span>stdio.h> -
- int
main(){ -
currentTime; -
-
-
-
-
-
0; - }
这种方法没给出计算时间差的实现,只给出如何用GetSystemTime调用得到当前时间,计算时间差比较简单,根据年、月、日、时、分秒和毫秒计算出一个整数,再将两整数相减即可。
0 0
- C 中 计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C计算程序运行时间
- C程序运行时间计算
- <C++>计算程序运行时间
- C/C++中计算程序的运行时间
- C、Java及Python中计算程序运行时间
- Visual Studio中计算C/C++程序运行时间
- C语言中如何计算程序运行的时间
- C/C++中如何计算程序运行时间?
- 计算程序的运行时间(C++)
- 计算程序的运行时间(c语言)
- 文件操作代码练习
- 黑马程序员_09. api-线程、单例设计模式
- rocketmq使用的系统参数page-cluster
- 市场需求文档MRD书写范例
- akka入门-对处理器状态进行持久化
- C/C++中计算程序运行时间
- 软件设计文档——概要设计书
- Memcache Hash算法揭秘
- 阅读代码点
- 嵌入式开发之道——菜鸟成长日志与项目经理的私房菜(读书笔记)
- SetLayoutParams和onMeasure的差别
- gdi+内存绘图
- Server Tomcat v7.0 Server at localhost failed to start.解决方法
- 【机房重构】奋斗组合查询