完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前手里有块orangepi pc 配置为全志H3 cortex-a7 Dmips/Mhz 标称 1.7 觉得性能不够好(本人性能狂热者,爱好超频) 于是兴致勃勃的购买了友善的nanopi t2 这家伙配置了一颗三星的4412cpu 内核cortex-a9 Dmips/Mhz标称 2.5,支持乱序执行 于是自己写了个简单的跑分程序,结果令人失望,结果见下面对比 orangpi pc跑分结果: 分支预测计算用时90s,总共用时217s 下面是友善nanopi t2的测试结果 分支预测计算用时竟然达到了148s,总共用时370s 都是测试的单核成绩,为什么4418竟然不如H3 本来打算查看cpu频率和锁频来着,可是不管是android系统还是linux系统,内核部分都没有cpu调频功能 敢问某大大的试用体验:https://bbs.elecfans.com/jishu_543986_1_1.html(用的是那个内核) 请问4418真的这么弱么? |
|
相关推荐
3 个讨论
|
|
#include
#include #include #include #include #include const int M=20000,N=50000;//整点、浮点运算的规模 const long N_pi=1000000000;//计算圆周率的运算规模 const int FENZHI=300000;//分支测试规模 double int_comp(void);//整点运算 double int_neicun_comp(void);//整点运算,结合内存 double float_comp(void);//浮点运算 double float_neicun_comp(); double pi_comp(void);//泰勒级数推论式计算圆周率 double neicun_copy(); double file_io_write_test(); double file_io_read_test(); double fengzhi_test(); void panduan(double i); void PAUSE(); int main(){ double sum_time=0,need_time; printf("------n性能测试开始n"); need_time=fengzhi_test(); printf("分支测试耗时:%lfsn",need_time); sum_time+=need_time; // need_time=file_io_write_test(); // printf("IO写入测试耗时:%lfsn",need_time); // sum_time+=need_time; // need_time=file_io_read_test(); // printf("IO读取测试耗时:%lfsn",need_time); // sum_time+=need_time; need_time=int_comp(); printf("整点运算耗时:%lfsn",need_time);//整点运算 sum_time+=need_time; need_time=float_comp(); printf("浮点运算耗时:%lfsn",need_time);//浮点运算 sum_time+=need_time; need_time=pi_comp(); printf("泰勒运算耗时:%lfsn",need_time);//泰勒级数推论式计算圆周率 sum_time+=need_time; need_time=int_neicun_comp(); printf("整点运算结合内存耗时:%lfsn",need_time);//整点运算 sum_time+=need_time; need_time=float_neicun_comp(); printf("浮点运算结合内存耗时:%lfsn",need_time);//浮点运算 sum_time+=need_time; need_time=neicun_copy(); printf("内存拷贝耗时:%lfsn",need_time); sum_time+=need_time; printf("------n测试结束,总时间:%lfn",sum_time); panduan(sum_time); return 0; } double int_comp(void){//整点加法 printf("整点运算测试中(运算次数为:%lf)n",(double)M*N); struct timeval start, end; int i,j,k; gettimeofday( &start, NULL ); for(i=0;i k=i; i=j*k; i=k; } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } double int_neicun_comp(void){//整点加法 printf("整点运算结合内存测试中(运算次数为:%lf)n",(double)M*N); struct timeval start, end; int i,j,* k; k=(int *)malloc(sizeof(int)*N); gettimeofday( &start, NULL ); for(i=0;i } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } double float_comp(void){//浮点加法 printf("浮点运算测试中(运算次数为:%lf)n",(double)M*N); struct timeval start, end; float i,j,k; gettimeofday( &start, NULL ); for(i=0;i k=i; i=j*k; i=k; } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } double float_neicun_comp(void){//浮点加法 printf("浮点运算结合内存测试中(运算次数为:%lf)n",(double)M*N); struct timeval start, end; float i,j,* k; k=(float *)malloc(sizeof(float)*N); gettimeofday( &start, NULL ); for(i=0;i } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } double pi_comp(void){ printf("泰勒级数推论式计算圆周率中(运算次数为:%ld)n",N_pi); int m,i=1; double s=0; struct timeval start, end; gettimeofday( &start, NULL ); for(m=1;m i=-i; } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } double neicun_copy(void){ int G,i,j,n=N/40; printf("内存拷贝测试大小:%fMBx10次n",(float)(M*n*sizeof(int))/1000000); int * k=(int *)malloc(sizeof(int)*M*n); int * z=(int *)malloc(sizeof(int)*M*n); for(i=0;i } struct timeval start, end; G=M*n; gettimeofday( &start, NULL ); for(j=0;j<100;j++) for(i=0;i gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } void panduan(double i){ printf("根据分数,授予您的爱机<"); if (i>800){ printf("渣渣"); } else if (i>400&&i<800){ printf("低端"); } else if (i>200&&i<400){ printf("中端"); } else if (i>100&&i<200){ printf("高端"); } else if (i>50&&i<100){ printf("超高端"); } else if (i<50){ printf("机皇"); } printf(">称号n"); } double file_io_write_test(){ printf("开始IO写入测试文件大小为:1000MBn"); struct timeval start, end; gettimeofday( &start, NULL ); for(int i=0;i<10;i++){ char buf[128]; FILE *pp; if( (pp = popen("dd if=/dev/zero of=io_test bs=1M count=100 2>/dev/zero", "r")) == NULL ) { printf("popen() error!n"); exit(1); } while(fgets(buf, sizeof buf, pp)) { printf("%s", buf); } pclose(pp); } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; printf("IO写入速度为:%fMb/sn",1000.0f/((float)timeuse/1000000)); return (double)timeuse/1000000; } double file_io_read_test(){ printf("开始IO读取测试文件大小为:1000MBn"); struct timeval start, end; gettimeofday( &start, NULL ); for(int i=0;i<10;i++){ char buf[128]; FILE *pp; if( (pp = popen("dd if=io_test of=/dev/zero 2>/dev/zero", "r")) == NULL ) { printf("popen() error!n"); exit(1); } while(fgets(buf, sizeof buf, pp)) { printf("%s", buf); } pclose(pp); } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; printf("IO读取速度为:%fMb/sn",1000.0f/((float)timeuse/1000000)); return (double)timeuse/1000000; } void jian(int * i,int j){ *i-=j; } void fenzhi(int * i){ if(* i>100000000){ jian(i,100); return; } if(* i>10000000){ jian(i,50); return; } if(* i>1000000){ jian(i,20); return; } if(* i>100000){ jian(i,15); return; } if(* i>10000){ jian(i,100); return; } if(* i>1000){ jian(i,10); return; } if(* i>100){ jian(i,5); return; } if(* i>10){ jian(i,1); return; }else{ * i=0; } } double fengzhi_test(){ printf("分之测试(乱序执行性能),运算规模:%dn",FENZHI); int j=0; struct timeval start, end; gettimeofday( &start, NULL ); for(int i=0;i while(j){ fenzhi(&j); } } gettimeofday( &end, NULL ); int timeuse = 1000000 * ( end.tv_sec - start.tv_sec ) + end.tv_usec - start.tv_usec; return (double)timeuse/1000000; } void PAUSE(){ printf("n请按任意键继续..."); getchar(); fflush(stdin); } |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
370个成员聚集在这个小组
加入小组NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5437 浏览 1 评论
7170 浏览 1 评论
4773 浏览 1 评论
【NanoPC-T4试用体验】4、手把手教你从单片机移植驱动到ARM Linux上
7731 浏览 1 评论
【NanoPC-T4试用体验】NanoPC-T4控制步进电机
24585 浏览 1 评论
NanoPi m3适合刷什么系统,刚接触玩,我刷了一个比较卡
5437浏览 1评论
435浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:49 , Processed in 0.871220 second(s), Total 45, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号