编程语言
首页 > 编程语言> > C++计时测试程序执行效率

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脚本生成得到如下结果:

image-20220320022710366

计时成功~

参考:[

C++中如何记录程序运行时间

bestsort-C++文件流

]


使用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