有时需要计算程序运行时间,这有许多方法,比如可以在调用函数前后记录时间,相减就可以得到运行时间。这需要在程序加入记录代码。也有方法不需要添加代码也能统计。下面的程序是一个简单的计算运行时间的工具,当然和linux下的time无法相比。
/* 文件名:running.c
* 计算程序运行时间
* author: lemene
* time: 2008-01-20
*/
#include <windows.h>
#include <stdio.h>
#include <getopt.h>
extern char *optarg;
void usage()
{
printf("这是一个简易的计算程序运行时间的工具\n");
printf("usage: CodeCounter [-hEps] [string|n]\n");
printf("-h 显示帮助信息\n");
printf("-E string 需要统计程序的路径\n");
printf("-p string 程序运行的参数\n");
printf("-s 是否显示程序运行窗口\n");
}
void running(const char* f, const char* p, int show)
{
SHELLEXECUTEINFO ExeInfo;
ZeroMemory(&ExeInfo,sizeof(SHELLEXECUTEINFO));
ExeInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ExeInfo.lpFile = f;
ExeInfo.fMask = SEE_MASK_NOCLOSEPROCESS ;
ExeInfo.nShow = show ? SW_SHOWNORMAL : SW_HIDE;
ExeInfo.lpParameters = p;
ShellExecuteEx(&ExeInfo);
WaitForSingleObject(ExeInfo.hProcess,INFINITE);
}
void err_msg()
{
printf("参数错误\n");
printf("running -h 查看帮助信息\n");
}
int main(int argc,char **argv)
{
char file[MAX_PATH] = {0};
char param[512];
int opt;
DWORD start;
int show = 0;
while((opt=getopt(argc,argv,"hE:p:s"))!=-1)
{
switch (opt)
{
case 'h':
usage();
return 0;
case 'p':
strcpy(param, optarg);
break;
case 'E':
strcpy(file, optarg);
break;
case 's':
show = 1;
break;
default:
err_msg();
return 0;
}
}
if (file[0] == 0)
{
err_msg();
return 0;
}
start = GetTickCount();
running(file, param, show);
printf("running time: %dms\n", GetTickCount()-start);
return 1;
}
编译:gcc -o running.exe running.c -O
测试:running -E CodeCounter.py -p "-d d:\dev-cpp -l -1"
输出:running time: 12328ms
(注:CodeCounter.py 程序见《
Python写的简易代码统计工具(2)》 )