Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1075186
  • 博文数量: 77
  • 博客积分: 11498
  • 博客等级: 上将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 11:10
文章分类

全部博文(77)

文章存档

2011年(1)

2010年(16)

2009年(5)

2008年(55)

分类: C/C++

2008-11-11 19:07:13


    实现一个Windows下的时间统计程序(类似于Linux下的time)
    作者:tyc611.cublog.cn,2008-11-11
在Linux下我们可以很方便地使用time工具来统计目标程序的运行时间,但我却没有发现Windows下有对应的工具可用。于是,自己动手,丰衣足食,写了一个,基本上能够满足自己的需求了。也放在这里,供感兴趣的朋友使用。该程序命名为timing(因为windows下已经有一个time命令了,只好另择其名),下面方便进行指代。

timing的实现原理
(1)利用命令行参数接收目标程序;
(2)利用子进程来执行目标程序;
(3)等待子进程结束,然后查询子进程的执行时间。

timing的功能:
(1)如果目标程序自然运行结束,那么可以顺利得到统计结果;
(2)可以使用Ctrl+C来中断程序执行,会得到此前的运行统计结果;
(3)目标程序的运行时间统计输出采用“[[[*h]*m]*s]*ms”表示,其中*表示具体数字,h表示小时,m表示分,s表示秒,ms表示毫秒(最小精度)。

timing的不足
(1)如果通过任务管理器杀死了timing进程,那么将无任何统计结果输出;
(2)没有考虑特殊的目标程序可能引起的问题(无奈本人经验有限)。

程序编译、运行演示(程序源码见后面的附件中)
F:\tmp>cl timing.cpp /nologo /DUNICODE /D_UNICODE
timing.cpp

F:\tmp>cl ttt1.cpp /nologo
ttt1.cpp

F:\tmp>timing ttt1.exe
2008-11-11 18:53:18 running...
2008-11-11 18:53:20 ...finished

Kernel Time: 46ms
User   Time: 2s31ms
Total  Time: 2s78ms

F:\tmp>cl /nologo ttt2.cpp
ttt2.cpp

F:\tmp>timing ttt2.exe
2008-11-11 19:00:32 running...
2008-11-11 19:01:58 ...killed(Ctrl+C)

Kernel Time: 62ms
User   Time: 1m21s453ms
Total  Time: 1m21s515ms
(注:这里使用了Ctrl+C来中断程序运行)

F:\tmp>

源码下载:
文件:timing.zip
大小:93KB
下载:下载


阅读(2311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~