标签:结束 快排 ons clean 速度 std star 性能测试 数量级
#include <stdio.h> #include <time.h>//clock()所属头文件 const int N_qsort=10000;//快排的数据规模 const int M=20000,N=50000;//整点、浮点运算的规模 const int N_pi=100000000;//计算圆周率的运算规模 double s_int,s_float,s_pi,s_sort; void int_comp(void);//整点运算 void float_comp(void);//浮点运算 void pi_comp(void);//泰勒级数推论式计算圆周率 void Qsort(int a[],int low,int high);//快排算法 void qsort(void);//调用快排算法的函数 void panduan(); void PAUSE(); int main(){ printf("------\n性能测试开始\n"); int_comp();//整点运算 float_comp();//浮点运算 pi_comp();//泰勒级数推论式计算圆周率 qsort();//快速排序 printf("------\n测试结束\n"); printf("整点运算得分:%lf\n",s_int); printf("泰勒级数推论式计算圆周率运算得分:%lf\n",s_pi); printf("排序运算得分:%lf\n",s_sort); printf("总得分:%lf\n",s_int+s_float+s_pi+s_sort); panduan(); PAUSE(); } void int_comp(void){//整点加法 printf("整点运算测试中(运算次数为:%lf)\n",(double)M*N); clock_t start,end; int i,j; start=clock(); for(i=0;i<M;i++) for(j=0;j<N;j++); end=clock(); double duration=(double)(end-start)/CLOCKS_PER_SEC; double score=(M*N)/duration; /*注:score本身即为运算速度,数量级一般在亿,为方便起见,本程序的分数均采用运算速度除以一万后的结果!除特殊说明,后面类同!*/ s_int=score/10000; //printf("整点运算测试完毕!分数:%lf\n",s_int); } void float_comp(void){//浮点加法 printf("浮点运算测试中(运算次数为:%lf)\n",(double)M*N); clock_t start,end; float i,j; start=clock(); for(i=0;i<M;i++) for(j=0;j<N;j++); end=clock(); double duration=(double)(end-start)/CLOCKS_PER_SEC; double score=(M*N)/duration; s_float=score/10000; //printf("浮点运算测试完毕!分数:%lf\n",s_float); } void pi_comp(void){ printf("泰勒级数推论式计算圆周率中(运算次数为:%d)\n",N_pi); int m,i=1; double s=0; clock_t start,end; start=clock(); for(m=1;m<N_pi;m+=2){ s+=i*(1.0/m); i=-i; } end=clock(); double duration=(double)(end-start)/CLOCKS_PER_SEC; double score=N_pi/duration; //下面一行可输出计算出来的圆周率 printf("pi=%lf\n",4*s); s_pi=score/10000; //printf("泰勒级数推论式计算圆周率完毕!分数:%lf\n",s_pi); } void Qsort(int a[],int low,int high){//快排算法 if(low>=high) return; int first=low; int last=high; int key=a[first]; while(first<last){ while(first<last&&a[last]>=key) --last; a[first]=a[last]; while(first<last&&a[first]<=key) ++first; a[last]=a[first]; } a[first]=key; Qsort(a,low,first-1); Qsort(a,first+1,high); } void qsort(void){//调用快排算法的函数 int a[N_qsort],i; for(i=N_qsort;i>0;i--) a[N_qsort-1]=i; printf("排序运算中(对%d个数进行快速排序)\n",N_qsort);//采用最坏时间方案 clock_t start,end; start=clock(); Qsort(a,0,N_qsort-1); end=clock(); double duration=(double)(end-start)/CLOCKS_PER_SEC; double score=(N_qsort*N_qsort)/duration; s_sort=score/10000; //printf("排序运算测试完毕!分数:%lf\n",s_sort); } void panduan(){ float i=s_int+s_float+s_pi+s_sort; printf("根据分数,授予您的爱机<"); if (i>0&&i<20000){ printf("渣渣"); } else if (i>20000&&i<30000){ printf("低端"); } else if (i>30000&&i<40000){ printf("中端"); } else if (i>40000&&i<50000){ printf("高端"); } else if (i>50000&&i<60000){ printf("超高端"); } else if (i>60000){ printf("机皇"); } printf(">称号\n"); } void PAUSE(){ clean_stdin(); }
标签:结束 快排 ons clean 速度 std star 性能测试 数量级
原文地址:https://www.cnblogs.com/Frank-dev-blog/p/9570796.html