首页 > 代码库 > [C语言]CPU跑分程序
[C语言]CPU跑分程序
|版权声明:本文为博主原创文章,未经博主允许不得转载。
Code:
1 #include <stdio.h> 2 #include <conio.h> 3 #include <time.h>//clock()所属头文件 4 const int N_qsort=10000;//快排的数据规模 5 const int M=20000,N=50000;//整点、浮点运算的规模 6 const int N_pi=100000000;//计算圆周率的运算规模 7 double s_int,s_float,s_pi,s_sort; 8 void int_comp(void);//整点运算 9 void float_comp(void);//浮点运算 10 void pi_comp(void);//泰勒级数推论式计算圆周率 11 void Qsort(int a[],int low,int high);//快排算法 12 void qsort(void);//调用快排算法的函数 13 void panduan(); 14 void PAUSE(); 15 int main(){ 16 printf("------\n性能测试开始\n"); 17 int_comp();//整点运算 18 float_comp();//浮点运算 19 pi_comp();//泰勒级数推论式计算圆周率 20 qsort();//快速排序 21 printf("------\n测试结束\n"); 22 printf("整点运算得分:%lf\n",s_int); 23 printf("泰勒级数推论式计算圆周率运算得分:%lf\n",s_pi); 24 printf("排序运算得分:%lf\n",s_sort); 25 printf("总得分:%lf\n",s_int+s_float+s_pi+s_sort); 26 panduan(); 27 PAUSE(); 28 return 0; 29 } 30 31 void int_comp(void){//整点加法 32 printf("整点运算测试中(运算次数为:%lf)\n",(double)M*N); 33 clock_t start,end; 34 int i,j; 35 start=clock(); 36 for(i=0;i<M;i++) 37 for(j=0;j<N;j++); 38 end=clock(); 39 double duration=(double)(end-start)/CLOCKS_PER_SEC; 40 double score=(M*N)/duration; 41 /*注:score本身即为运算速度,数量级一般在亿,为方便起见,本程序的分数均采用运算速度除以一万后的结果!除特殊说明,后面类同!*/ 42 s_int=score/10000; 43 //printf("整点运算测试完毕!分数:%lf\n",s_int); 44 } 45 46 void float_comp(void){//浮点加法 47 printf("浮点运算测试中(运算次数为:%lf)\n",(double)M*N); 48 clock_t start,end; 49 float i,j; 50 start=clock(); 51 for(i=0;i<M;i++) 52 for(j=0;j<N;j++); 53 end=clock(); 54 double duration=(double)(end-start)/CLOCKS_PER_SEC; 55 double score=(M*N)/duration; 56 s_float=score/10000; 57 //printf("浮点运算测试完毕!分数:%lf\n",s_float); 58 } 59 60 void pi_comp(void){ 61 printf("泰勒级数推论式计算圆周率中(运算次数为:%d)\n",N_pi); 62 int m,i=1; 63 double s=0; 64 clock_t start,end; 65 start=clock(); 66 for(m=1;m<N_pi;m+=2){ 67 s+=i*(1.0/m); 68 i=-i; 69 } 70 end=clock(); 71 double duration=(double)(end-start)/CLOCKS_PER_SEC; 72 double score=N_pi/duration; 73 //下面一行可输出计算出来的圆周率 74 //printf("pi=%lf\n",4*s); 75 s_pi=score/10000; 76 //printf("泰勒级数推论式计算圆周率完毕!分数:%lf\n",s_pi); 77 } 78 void Qsort(int a[],int low,int high){//快排算法 79 if(low>=high) return; 80 int first=low; 81 int last=high; 82 int key=a[first]; 83 while(first<last){ 84 while(first<last&&a[last]>=key) --last; 85 a[first]=a[last]; 86 while(first<last&&a[first]<=key) ++first; 87 a[last]=a[first]; 88 } 89 a[first]=key; 90 Qsort(a,low,first-1); 91 Qsort(a,first+1,high); 92 } 93 void qsort(void){//调用快排算法的函数 94 int a[N_qsort],i; 95 for(i=N_qsort;i>0;i--) a[N_qsort-1]=i; 96 printf("排序运算中(对%d个数进行快速排序)\n",N_qsort);//采用最坏时间方案 97 clock_t start,end; 98 start=clock(); 99 Qsort(a,0,N_qsort-1);100 end=clock();101 double duration=(double)(end-start)/CLOCKS_PER_SEC;102 double score=(N_qsort*N_qsort)/duration;103 s_sort=score/10000;104 //printf("排序运算测试完毕!分数:%lf\n",s_sort);105 }106 void panduan(){107 float i=s_int+s_float+s_pi+s_sort;108 printf("根据分数,授予您的爱机<");109 if (i>0&&i<20000){110 printf("渣渣");111 }112 else if (i>20000&&i<30000){113 printf("低端");114 }115 else if (i>30000&&i<40000){116 printf("中端");117 }118 else if (i>40000&&i<50000){119 printf("高端");120 }121 else if (i>50000&&i<60000){122 printf("超高端");123 }124 else if (i>60000){125 printf("机皇");126 }127 printf(">称号\n");128 }129 void PAUSE(){130 printf("\n请按任意键继续...");getch();fflush(stdin);131 }
[C语言]CPU跑分程序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。