2017-09-21

猎数博客

数据挖掘,机器学习

CPU 加法速度测试

作者:江航 / 2011-04-09 / (阅读 1,886 次) /



写了个程序来粗略测试CPU的加法速度。思想很简单,就是让CPU做加法。
我的CPU是E1400, ubuntu 10.04. 从程序输出看,1K次加法需要10us,1M次加法耗时约10000us=10毫秒,由此1秒可以算加法1Mx100=0.1G.
再看下面的数据,1G次加法耗时6秒,小于根据上面速度算出来的数据(10s)。加法速度为0.17G/s
再往下,4G次加法耗时18秒(小于6sx4),8G次加法耗时36秒(等于18sx2)。加法速度为0.23G/s
再增加次数,速度已经得不到提高了。由此该CPU最大的加法速度为0.23G次/s ,其中包含同样数量的比较计算,如果把比较计算和加法计算等同,那么计算速度可再增加一倍,即0.46G/s,马虎点,就算是0.5G/s, 那么1G加法需要两秒。
该CPU主频为2G。粗略算一下,0.5G加法/s, 2G/0.5G=4, 平均4~5拍计算一次加法(含比较)。
下面是程序和输出。

#include "stdio.h"      
#include <sys/time.h>        

#include "stdint.h"      

FILE *gfp=NULL;      

long iTimeInterval;      

typedef void (*TestFunc)(void*) ;        

//void count_time(TestFunc func,void* data)      

void add(void* data)         

{        

int64_t nums=*((int64_t*)data);      

int a = 0x4567;      

int c=0;         

for(int64_t i =0 ; i < nums ; i ++){         

c += a;      

}        

}        

int main()       

{        

int64_t num=1024 ; //1K      

printf("add %lld times take time:",num) ;        

count_time(add,(void*)&amp;num);         

printf("\n");        

num=1024*1024 ; //1M         

printf("add %lld times take time:",num) ;        

count_time(add,(void*)&amp;num);         

printf("\n");        

num=1024*1024*1024 ; //1G        

printf("add %lld times take time:",num) ;        

count_time(add,(void*)&amp;num);         

printf("\n");        

num=(int64_t)1024*1024*1024*4 ; //4G         

printf("add %lld times take time:",num) ;        

count_time(add,(void*)&amp;num);         

printf("\n");        

num=(int64_t)1024*1024*1024*8 ; //8G         

printf("add %lld times take time:",num) ;        

count_time(add,(void*)&amp;num);         

printf("\n");        

}

输出为:

add 1024 times take time:10 us
add 1048576 times take time:9683 us
add 1073741824 times take time:6011186 us
add 4294967296 times take time:18026683 us
add 8589934592 times take time:36083623 us



本文地址: http://www.bagualu.net/wordpress/archives/53 转载请注明






相关文章

  • 为solr配中文分词( 3,580 )
  • 霍夫曼编码和算术编码简单比较( 2,978 )
  • CPU乘法速度测试( 2,380 )
  • CPU 加法速度测试( 1,886 )
  • 多线程文件处理实例( 1,759 )
  • 磁盘速度问题( 1,544 )
  • nutch 2.x index( 1,494 )
  • nutch solrdedup( 1,470 )
  • 硬盘参数及速度(二)( 1,444 )
  • nutch 2.x 蜘蛛抓来的数据( 1,395 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net