C++程序运行时间测定

From:http://www.cnblogs.com/killerlegend/p/3877703.html

Author:KillerLegend

Date:2014.7.30

此处程序的测试时间精确到毫秒级别,第一种方式是在程序中测定,第二种是编写一个专门用于测试程序运行时间的命令行程序.下面分别介绍:

程序中测定

主要用到的头文件有time.h,主要使用的是其中的一个clock函数,例程如下:

 

 1 #include <iostream>

 2 

 3 #include <time.h>

 4 

 5 usingnamespace std;

 6 

 7 int main()

 8 

 9 {

10 

11     clock_t start = clock();

12 

13     // Place your codes here...

14 

15     clock_t ends = clock();

16 

17     cout <<"Running Time : "<<(double)(ends - start)/ CLOCKS_PER_SEC << endl;

18 

19     return0;

20 

21 }

 

程序很简单,输出的结果秒数,如果将结果乘以1000则输出的为毫秒数.

命令行程序测定

首先说一下命令行参数,完整的main函数声明如下:

1 int main (int argc,char*argv[])

 

其中第一个参数argc代表argument count,也就是参数的个数,应用程序本身也算一个参数,第二个参数argv表示一系列字符串,分别对应于第一个,第二个...参数.第一个参数argv[0]是程序本身的名字,argv[argc]是一个空指针.现在我们就可以自己编写一个简单的计时器程序了,程序如下,名字就叫做timer.cpp:

 1 #include <iostream>

 2 

 3 #include <stdlib.h>

 4 

 5 #include <time.h>

 6 

 7  

 8 

 9 usingnamespace std;

10 

11 int main(int argc,char** argv)//char** argv<==>char* agrv[]

12 

13 {

14 

15     if(argc!=2)

16 

17     {

18 

19         cout<<"Usage:timer program_examed_name"<<endl;

20 

21         return1;

22 

23     }

24 

25  

26 

27     cout<<"Beginning test..."<<endl;

28 

29     clock_t begin = clock();

30 

31     system(argv[1]);

32 

33     clock_t end = clock();

34 

35  

36 

37     cout<<"Running time: "<<(double)(end-begin)/CLOCKS_PER_SEC*1000<<"ms"<<endl;

38 

39 }

 

 

其中的if语句用于判断参数的个数,如果不对,则中断程序.用到的system包含于stdlib.h头文件横纵,因此不要忘记包含这个文件.此命令用于执行我们编译好的程序.下面来具体说一下步骤:

1:首先将timer.cpp编译,生成一个timer.exe可执行程序.

2:我们的程序,假设为main.cpp,如果我们要从外界读取数据并且输出数据,我们需要使用freopen函数(包含在stdio.h中)来让程序执行的时候自动读取输出,看起来就像这样子:

 1 #include <cstdio>

 2 

 3 //...other headers

 4 

 5 int main()

 6 

 7 {

 8 

 9     freopen("data.in","r",stdin);

10 

11     freopen("data.out","w",stdout);

12 

13     //your code...

14 

15     return0;

16 

17 }

 

其中,data.in和data.out自己随便起名都可以,保证和原程序在同一个目录下就行.

编译程序完成后, 生成一个main.exe程序,然后将所需要的数据放到data.in中,打开命令行,转到我们的程序所在的位置(包含有main.exe以及timer.exe),然后在命令行中输入:

1 timer main

 

看起来就像下面这样:

 C++程序运行时间测定

时间是74ms.

你当然可以多测试几次,取一个平均值.

 

希望对你有用.

 

 

你可能感兴趣的:(C++)