C++中如何计算程序运行的时间 (转载)

转载地址:http://blog.csdn.net/wuxuguang123/article/details/8130081

一 个程序的功能通常有很多种方法来实现,怎么样的程序才算得上最优呢?举个例子,如果实现同一个功能的两个程序,一个一点按钮就给出运行结果,而另一个则需 要漫长的时间去等待,就像安装WINDOWS XP一样(呵呵,太夸张了吧),你会去使用哪个程序呢?毋庸置疑,最优程序的第一条法则就是:程序的运行速度要快。

 
 那么,既然一个程序能用多种方法来实现,我又如何知道哪种方法是最优的呢?有些程序是显而易见的,你把它运行一下,一个程序要3秒,一个要1秒,你当然
能感觉出来。如果都在一秒之内呢,你又可以看申请的内存空间的多少,运算的数据大小,运算过程的简单复杂,有时也能分辨出哪个程序最好,可是有的时候,却
不是那么容易看出来,比如它比另一个程序少定义一个变量,可是它又比那另一个程序多用几个除法,那么你就如何比较它们的运行速度呢?办法只有一个——计
时!

  C++中的计时函数是clock(),而与其相关的数据类型是clock_t(头文件是time.h)。函数定义原型为:clock_t
clock(void);

  这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock
tick)数,在MSDN中称之为挂钟时间(wal-clock)。

  其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
   #ifndef _CLOCK_T_DEFINED
   typedef long clock_t;
   #define _CLOCK_T_DEFINED
   #endif
  很明显,clock_t是一个长整形数。另外在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,因此,我们就可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间。

  下面就上面的知识给大家举个例子帮助大家理解。

#include<iostream.h>
#include<time.h>
void main()
{
   clock_t start,finish;
   double totaltime;
   start=clock();

……                     //把你的程序代码插入到这里面

finish=clock();
   totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
   cout<<"\n此程序的运行时间为"<<totaltime<<"秒!"<<endl;
}

  如此这般,我们就可以得出程序的运行时间然后进行比较,很简单,很方便吧。
  可能有人要问,如果两个程序的运行时间都少于一秒,我们根本就感觉不到,有比较的意义么?回答是有!因为我们写的可能只是一个很大的程序中的一个功能
函数,而在主程序中可能会反复调用这个功能函数,如果一个功能函数比另一个实现同样一个功能函数运行快0.01秒,把这两个函数在主函数中分别调用
1000次,效果是显而易见的。
  好了,这是我的一些小经验,希望能给我的LP和其他的朋友们提供一点小小的帮助。

自己应用的模板代码:

#include <stdio.h>
#include <time.h>

int f[100000001];

int main()
{
    clock_t s, e;
    s = clock();
    //........code......

    e = clock();

    printf("%.6lf\n", (double)(e-s)/(double)CLOCKS_PER_SEC );
    return 0;
}
时间: 2024-10-06 16:55:41

C++中如何计算程序运行的时间 (转载)的相关文章

C/C++中如何计算程序运行的时间

一个程序的功能通常有很多种方法来实现,怎么样的程序才算得上最优呢?举个例子,如果实现同一个功能的两个程序,一个一点按钮就给出运行结果,而另一个则需要漫长的时间去等待,就像安装WINDOWS XP一样(呵呵,太夸张了吧),你会去使用哪个程序呢?毋庸置疑,最优程序的第一条法则就是:程序的运行速度要快. 那么,既然一个程序能用多种方法来实现,我又如何知道哪种方法是最优的呢?有些程序是显而易见的,你把它运行一下,一个程序要3秒,一个要1秒,你当然能感觉出来.如果都在一秒之内呢,你又可以看申请的内存空间的

C++中计算程序运行的时间

首先定义clock_t start, end; 然后在自己要测试那段代码的前面加上start = clock(); 结尾加上end = clock(); 最后用输出语句进行 cout<<"Run time: "<<(double)(end - start) / CLOCKS_PER_SEC<<"S"<<endl; cout<<"Run time: "<<(double)(en

将内容输入到文本中、读取文件、将输出结果保存到文件中、计算程序跑的时间(c++)

将数据输出到文件中 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<map> #include<cstdlib> #include<fstream> #include<time.h> using names

计算程序运行的时间

1.这个是windows里面常用来计算程序运行时间的函数: DWORD dwStart = GetTickCount(); //这里运行你的程序代码 DWORD dwEnd = GetTickCount(); 则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位 这个函数只精确到55ms,1个tick就是55ms. #include <iostream> #include <windows.h> using namespace std; int main(int a

python-time模块计算程序运行的时间

计算python程序的运行时间 方法1 import datetimestarttime = datetime.datetime.now()#long runningendtime = datetime.datetime.now()print (endtime - starttime).seconds 方法 2start = time.time()run_fun()end = time.time()print end-start 方法3start = time.clock()run_fun()e

计算程序运行的时间一个函数

1 #include<iostream> 2 #include<time.h> 3 using namespace std; 4 int main() 5 { 6 double n; 7 while (cin >> n) 8 { 9 int k = 0; 10 for (int i = 0; i < n; i++) 11 { 12 k++; 13 } 14 cout << k << endl; 15 cout << "

java 计算程序运行的时间

第一种是以毫秒为单位计算的. long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTime)); 第二种是以纳秒为单位计算的. long startTime=System.nanoTime(); doS

C语言计算程序运行的时间

参考网址:http://blog.csdn.net/trustbo/article/details/10582287 #include <</span>stdio.h> #include <</span>sys/time.h> int main() { struct timeval start, end; gettimeofday( &start, NULL ); sleep(3); gettimeofday( &end, NULL ); i

[转载] C/C++中怎样获取日期和时间

C/C++中怎样获取日期和时间摘要: 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法. 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 1.概念 在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有