C++中计算程序的运行时间
来源:互联网 发布:淘宝店铺活动图片 编辑:程序博客网 时间:2024/05/29 16:10
个程序的功能通常有很多种方法来实现,怎么样的程序才算得上最优呢?举个例子,如果实现同一个功能的两个程序,一个一点按钮就给出运行结果,而另一个则需要漫长的时间去等待,就像安装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来计算一个进程自身的运行时间。
下面就上面的知识给大家举个例子帮助大家理解。
#i nclude<iostream.h>
#i nclude<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次,效果是显而易见的。
那么,既然一个程序能用多种方法来实现,我又如何知道哪种方法是最优的呢?有些程序是显而易见的,你把它运行一下,一个程序要3秒,一个要1秒,你当然能感觉出来。如果都在一秒之内呢,你又可以看申请的内存空间的多少,运算的数据大小,运算过程的简单复杂,有时也能分辨出哪个程序最好,可是有的时候,却不是那么容易看出来,比如它比另一个程序少定义一个变量,可是它又比那另一个程序多用几个除法,那么你就如何比较它们的运行速度呢?办法只有一个——计时!
C++中的计时函数是clock(),而与其相关的数据类型是clock_t(头文件是time.h)。函数定义原型为:clock_t clock(void);
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。
其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
下面就上面的知识给大家举个例子帮助大家理解。
#i nclude<iostream.h>
#i nclude<time.h>
void main()
{
}
如此这般,我们就可以得出程序的运行时间然后进行比较,很简单,很方便吧。
可能有人要问,如果两个程序的运行时间都少于一秒,我们根本就感觉不到,有比较的意义么?回答是有!因为我们写的可能只是一个很大的程序中的一个功能函数,而在主程序中可能会反复调用这个功能函数,如果一个功能函数比另一个实现同样一个功能函数运行快0.01秒,把这两个函数在主函数中分别调用1000次,效果是显而易见的。
vc++中文件路径写法
c++中\是一种转义字符,他表示一个,就像n表示回车一样。
所以VC中路径名:
D:matcom45docusers_themesm.dat
应为:
CString filename=_T("D:\matcom45\doc\users\_themes\m.dat");
或
CString filename=_T("D:/matcom45/doc/users/_themes/m.dat");
- C/C++中计算程序的运行时间
- C语言中如何计算程序运行的时间
- C 中 计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- C/C++中计算程序运行时间
- 计算程序的运行时间(C++)
- 计算程序的运行时间(c语言)
- 计算程序的运行时间(C++) .
- C 语言计算程序运行的时间
- C++中计算程序的运行时间
- C++中计算程序的运行时间
- C++中计算程序的运行时间
- C++中计算程序的运行时间
- ostream_iterator详细解析
- JAVA程序员面试题集合
- 分段和分页
- [代码备份]Scanner读取控制台和文件输入
- Unity4.0 新特性
- C++中计算程序的运行时间
- AndroidManifest.xml
- How to Install Oracle Java 6 in Ubuntu 12.10
- architecture&platform&system&framework
- POJ1135 多米诺效应(单源最短路径+枚举)
- centOS fcitx
- STL 容器适配器
- LED滚动显示算法及实现
- Python 父类、子类的数据掺杂到一起了?