程序的运行效率对金融工程计算至关重要,提高效率主要靠算法,次要靠硬件。反应程序效率最直接的办法是观察运行时间。在MATLAB中可以应用tic,toc插入到程序中返回程序段的运行时间,其实在C++中也可以实现上述功能。 先写一个头文件“runtime.h”,转换时间格式 #include<iostream>
#include<time.h>
using namespace std; void runtime (int t)
{
t=abs(t);
int n=t/CLOCKS_PER_SEC;
int r=t-CLOCKS_PER_SEC*n;
cout<<endl;
cout<<"运行时间:";
if (n!=0)
{
if (n/60==0)
cout<<n<<" 秒 "<<r<<" 毫秒"<<endl;
else
{
if (n/3600==0)
cout<<n/60<<" 分 "<<n`<<" 秒 "<<r<<" 毫秒"<<endl;
else
cout<<n/3600<<" 小时 "<<(n600)/60<<\
" 分 "<<(n600)`<<" 秒 "<<r<<" 毫秒"<<endl;
}
}
else
cout<<t<<" 毫秒"<<endl;
} 程序中的CLOCKS_PER_SEC反映了CPU时间精度,我的系统CLOCKS_PER_SEC=1000,所以最小时间单位是0.001秒,即1毫秒。你可以通过以下程序查看自己系统的CLOCKS_PER_SEC,相应的修改头文件。 #include<iostream>
#include<time.h>
using namespace std; int main()
{
cout<<CLOCKS_PER_SEC<<endl;
} 下面写一个小程序并返回运行时间。 #include<iostream>
#include<math.h>
#include"runtime.h"
using namespace std;
long Fibonacci (long n) //递归法计算Fibonacci数列(算法比较耗时)
{
if (n==1||n==2)
return 1;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
int main()
{
clock_t start=clock();
cout<<Fibonacci(40)<<endl;
clock_t finish=clock();
runtime(finish-start); return 0;
} 要想查看程序段的运行时间,操作和MATLAB中的tic,toc命令用法一样,只要将tic,toc换成start=clock(),finish=clock(),但是要声明变量类型clock_t(用int好像也可以)。 我的电脑用了6秒,你的呢?
|