From:http://www.cnblogs.com/killerlegend/p/3877703.html
Author:KillerLegend
Date:2014.7.30
此处程序的测试时间精确到毫秒级别,第一种方式是在程序中测定,第二种是编写一个专门用于测试程序运行时间的命令行程序.下面分别介绍:
程序中测定
主要用到的头文件有time.h,主要使用的是其中的一个clock函数,例程如下:
#include <iostream> #include <time.h> usingnamespace std; int main() { clock_t start = clock(); // Place your codes here... clock_t ends = clock(); cout <<"Running Time : "<<(double)(ends - start)/ CLOCKS_PER_SEC << endl; return0; }
程序很简单,输出的结果秒数,如果将结果乘以1000则输出的为毫秒数.
命令行程序测定
首先说一下命令行参数,完整的main函数声明如下:
int main (int argc,char*argv[])
其中第一个参数argc代表argument count,也就是参数的个数,应用程序本身也算一个参数,第二个参数argv表示一系列字符串,分别对应于第一个,第二个...参数.第一个参数argv[0]是程序本身的名字,argv[argc]是一个空指针.现在我们就可以自己编写一个简单的计时器程序了,程序如下,名字就叫做timer.cpp:
#include <iostream> #include <stdlib.h> #include <time.h> usingnamespace std; int main(int argc,char** argv)//char** argv<==>char* agrv[] { if(argc!=) { cout<<"Usage:timer program_examed_name"<<endl; return1; } cout<<"Beginning test..."<<endl; clock_t begin = clock(); system(argv[]); clock_t end = clock(); cout<<"Running time: "<<(double)(end-begin)/CLOCKS_PER_SEC*<<"ms"<<endl; }
其中的if语句用于判断参数的个数,如果不对,则中断程序.用到的system包含于stdlib.h头文件横纵,因此不要忘记包含这个文件.此命令用于执行我们编译好的程序.下面来具体说一下步骤:
1:首先将timer.cpp编译,生成一个timer.exe可执行程序.
2:我们的程序,假设为main.cpp,如果我们要从外界读取数据并且输出数据,我们需要使用freopen函数(包含在stdio.h中)来让程序执行的时候自动读取输出,看起来就像这样子:
#include <cstdio> //...other headers int main() { freopen("data.in","r",stdin); freopen("data.out","w",stdout); //your code... return0; }
其中,data.in和data.out自己随便起名都可以,保证和原程序在同一个目录下就行.
编译程序完成后, 生成一个main.exe程序,然后将所需要的数据放到data.in中,打开命令行,转到我们的程序所在的位置(包含有main.exe以及timer.exe),然后在命令行中输入:
timer main
看起来就像下面这样:
时间是74ms.
你当然可以多测试几次,取一个平均值.
希望对你有用.