zoukankan      html  css  js  c++  java
  • C/C++中如何计算程序运行的时间

    转自:http://www.cnitblog.com/mantou/archive/2005/08/24/2304.html

     一个程序的功能通常有很多种方法来实现,怎么样的程序才算得上最优呢?举个例子,如果实现同一个功能的两个程序,一个一点按钮就给出运行结果,而另一个则需要漫长的时间去等待,就像安装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<<" 此程序的运行时间为"<<totaltime<<"秒!"<<endl;
    }

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

  • 相关阅读:
    flash中网页跳转总结
    as3自定义事件
    mouseChildren启示
    flash拖动条移出flash无法拖动
    需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
    Teach Yourself SQL in 10 Minutes
    电子书本地转换软件 Calibre
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes – Page 31 练习
  • 原文地址:https://www.cnblogs.com/zhiqiangliu/p/4904365.html
Copyright © 2011-2022 走看看