C++计时测试程序执行效率
作者:互联网
C++计时
需要文件头:<ctime>
(具体解释见参考= =)
clock()
返回一个CLOCK_t
类型的结果,表示从程序开始运行到执行这个函数所花费的时间,单位ms;所以通过不同位置的clock()
函数相减,可以得到该区间所消耗的时间
利用离散实验的测试代码:
#include <iostream>
#include <ctime>
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
void bubble(int *a,int len){ //简单的冒泡排序
for(int i=0;i<len-1;i++){
for(int j=len-1;j>i;j--){
if(a[j]>a[j-1]){
a[j]=a[j]^a[j-1];
a[j-1]=a[j-1]^a[j];
a[j]=a[j]^a[j-1];
}
}
}
}
bool cmp(int a,int b){ //比较函数
return a>b;
}
int main(){
fstream putin;
for(int i=1;i<=5;i++){ //准备好五份输入数据,依次输入10,100,1000,10000,100000的数据量
string str("./data/data");
str=str+char(48+i)+".txt";
putin.open(str,ios::in); //拼接路径并打开相应文件
int n,m;
putin>>n>>m; //输入规模与输出数量
int *a=new int[n],*b=new int[n];
for(int i=0;i<n;i++){ //输入测试数据
putin>>a[i];
b[i]=a[i];
}
clock_t beg_1=clock(); //计时
bubble(a,n);
clock_t end_1=clock(),beg_2=clock();
sort(b,b+n,cmp);
clock_t end_2=clock();
cout<<"Data Scale is: 10^"<<i<<endl;
cout<<"Bubble needs time: "<<(end_1-beg_1)<<"ms"<<endl;
cout<<"Sort() needs time: "<<(end_2-beg_2)<<"ms"<<endl;
for(int i=0;i<m;i++) cout<<a[i]<<" "; //输出前m个数据,这里只显示效率
putin.close(); //关闭文件
delete []a;
delete []b;
}
return 1;
}
离散实验要求: 输入n个一定范围的数据,并输出前m个最大的数据,利用冒泡排序与sort()
函数实现,并比较两者效率
由于数据量过大,直接在终端中输入会出现卡顿,选择以文件形式输入数据,并以循环的方式遍历输入五组不同规模的数据,由于以比较效率为主,固定m=0
根据Python脚本生成得到如下结果:
计时成功~
参考:[
]
使用Python脚本随机生成指定量的数据:
# 自动生成输入数据脚本(写入文件版)
import random
n=int(input('plz input scale:')) #输入数据数量
od=input('plz input order:') #输入序号 -> Eg:od=1,最后输出的文件名为"data1.txt"
a=int(input('plz input range:')) #输入数据范围左半部分
b=int(input()) #输入数据范围右半部分
string1=".\data"+od+".txt" #给文件编号
f=open(string1,"w") #在当前目录打开或创建"data.txt"文件
prestr=str(n)+" 0\n" #输入规模与显示个数(默认为0)
f.write(prestr)
i=1
while i<=n:
string=" "+str(random.randint(a,b)) #按照给定范围生成随机数据
f.write(string) #向文件中写入随机数据
i=i+1
f.write('\n') #提示输入结束
f.close()
该脚本会得到一个名为"data?.txt"的文件,其数据符合上述实验输入数据的要求
标签:clock,int,C++,测试程序,计时,input,include,数据,输入 来源: https://www.cnblogs.com/Forest-set-you/p/16028863.html