CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

java在PC上的速度,兄弟们帮运行一下。

楼主oct14(穿山甲)2004-12-01 12:49:50 在 Java / J2SE / 基础类 提问

主要测一下java在目前普通PC机上的速度如何。  
  测的是整数运算和浮点运算。  
   
  麻烦注明cpu和内存型号.  
   
  程序如下,也可下栽  
  http://smartlize.vip.sina.com/PO.class  
  http://smartlize.vip.sina.com/PO.java  
   
   
  public   class   PO  
  {  
     
      private   int[]   mint;  
      private   double[]   mdouble;  
       
      private   final   int   dataType;  
      private   final   int   size;  
       
      public   static   final   int   t_int=1;  
      public   static   final   int   t_double=2;  
   
      public   PO(int   dataType,int   size)  
      {  
          this.dataType=dataType;  
          this.size=size;  
          switch(dataType)  
          {              
              case   t_int:  
                  mint=new   int[size];  
                  for(int   i=0;i<size;i++)  
                      mint[i]=i*2;  
                  break;  
              case   t_double:  
                  mdouble=new   double[size];  
                  for(int   i=0;i<size;i++)  
                      mdouble[i]=i*2.1;  
                  break;  
          }  
      }      
   
      public   int   getInteger(int   index)  
      {  
          switch(dataType)  
          {              
              case   t_int:  
                  return   mint[index];  
              default:  
                  throw   new   RuntimeException("value   is   not   integer,getInteger   isnot   applicable.");  
          }  
      }  
       
      public   double   getDouble(int   index)  
      {  
          if(dataType==t_double)  
              return   mdouble[index];  
          else  
              throw   new   RuntimeException("value   is   not   double,getDouble   isnot   applicable.");  
      }  
       
      public   double[]   getDoubleArr()  
      {  
          return   mdouble;  
      }  
       
      public   int[]   getIntArr()  
      {  
          return   mint;  
      }  
       
      public   static   void   main(String[]   args)  
      {  
          int   multi=10;  
          int   size=2*1024*1024;          
          PO   poInt=new   PO(PO.t_int,size);  
          PO   poDouble=new   PO(PO.t_double,size);  
           
           
          long   begin=0,end=0;  
          long   rateInt,rateDouble;  
          System.out.println("hit   count:"+size*multi/(1024*1024)+   "   M\n");  
           
           
         
          int   tempIntD=0;  
          int[]   arrInt=poInt.getIntArr();  
          begin=System.currentTimeMillis();  
          for(int   m=0;m<multi;m++)  
          for(int   i=0;i<size;i++)  
              tempIntD+=arrInt[i];  
          end=System.currentTimeMillis();  
          System.out.println("direct   Int:"+(end-begin)+"   millisecond,   speed   "+(size*multi/((end-begin)*1024))+   "M/s");  
     
          double   tempDoubleD=0;  
          double[]   arrDouble=poDouble.getDoubleArr();  
          begin=System.currentTimeMillis();  
          for(int   m=0;m<multi;m++)  
          for(int   i=0;i<size;i++)  
              tempDoubleD+=arrDouble[i];  
          end=System.currentTimeMillis();  
          System.out.println("Double:"+(end-begin)+"   millisecond,   speed   "+(size*multi/((end-begin)*1024))+   "M/s\n");  
     
          int   tempInt=0;  
          begin=System.currentTimeMillis();  
          for(int   m=0;m<multi;m++)  
          for(int   i=0;i<size;i++)  
              tempInt+=poInt.getInteger(i);  
          end=System.currentTimeMillis();  
          System.out.println("Int:"+(end-begin)+"   millisecond,   speed   "+(size*multi/((end-begin)*1024))+   "M/s");  
           
          double   tempDouble=0;  
          begin=System.currentTimeMillis();  
          for(int   m=0;m<multi;m++)  
          for(int   i=0;i<size;i++)  
              tempDouble+=poDouble.getDouble(i);  
          end=System.currentTimeMillis();  
          System.out.println("Double:"+(end-begin)+"   millisecond,   speed   "+(size*multi/((end-begin)*1024))+   "M/s\n");  
       
      }      
  }  
  问题点数:50、回复次数:34Top

1 楼oct14(穿山甲)回复于 2004-12-01 12:52:03 得分 0

我先说我自己的。  
   
  cpu:P4   1.6G   Mobile  
  内存:512M   ddr266  
   
  运行结果:  
  hit   count:20   M  
   
  direct   Int:130   millisecond,   speed   157M/s  
  Double:410   millisecond,   speed   49M/s  
   
  Int:782   millisecond,   speed   26M/s  
  Double:410   millisecond,   speed   49M/s  
  Top

2 楼smallnest(公子小巢)回复于 2004-12-01 12:54:50 得分 3

CPU:P4   2.8    
  neicun1:512M  
   
   
   
  hit   count:20   M  
   
  direct   Int:78   millisecond,   speed   262M  
  Double:203   millisecond,   speed   100M/s  
   
  Int:422   millisecond,   speed   48M/s  
  Double:203   millisecond,   speed   100M/sTop

3 楼drugon(更高,更远,更强)回复于 2004-12-01 13:05:55 得分 3

----------   运行Java程序   ----------  
  P3:667  
  288   SDRAM  
   
  hit   count:20   M  
   
  direct   Int:661   millisecond,   speed   30M/s  
  Double:1022   millisecond,   speed   20M/s  
   
  Int:1402   millisecond,   speed   14M/s  
  Double:1151   millisecond,   speed   17M/s  
  Top

4 楼123xxx(香克斯)回复于 2004-12-01 13:18:27 得分 3

p4   2.8  
  512   RAM  
   
  hit   count:20   M  
   
  direct   Int:93   millisecond,   speed   220M/s  
  Double:219   millisecond,   speed   93M/s  
   
  Int:188   millisecond,   speed   108M/s  
  Double:218   millisecond,   speed   93M/sTop

5 楼tigeryu(吴越小虎)回复于 2004-12-01 13:38:47 得分 3

Celeron   1G  
   
  hit   count:20   M  
   
   
  direct   Int:661   millisecond,   speed   30M/s  
   
  Double:561   millisecond,   speed   36M/s  
   
   
  Int:1112   millisecond,   speed   18M/s  
   
  Double:941   millisecond,   speed   21M/sTop

6 楼windindance(风舞轻扬·白首为功名)回复于 2004-12-01 13:53:32 得分 2

PIII1.1G   256M  
   
  hit   count:20   M  
   
  direct   Int:281   millisecond,   speed   72M/s  
  Double:350   millisecond,   speed   58M/s  
   
  Int:581   millisecond,   speed   35M/s  
  Double:441   millisecond,   speed   46M/sTop

7 楼qiyongjun2003(风也悄悄)回复于 2004-12-01 14:02:58 得分 2

pIII   900   512MB  
  hit   count:20   M  
   
  direct   Int:631   millisecond,   speed   32M/s  
  Double:1052   millisecond,   speed   19M/s  
   
  Int:1282   millisecond,   speed   15M/s  
  Double:1121   millisecond,   speed   18M/sTop

8 楼launch401(乌兰巴托的夜 那么静 那么静)回复于 2004-12-01 14:14:17 得分 0

抛异常:  
  hit   count:20   M  
   
  direct   Int:78   millisecond,   speed   262M/sException    
  in   thread   "main"   java.lang.ArithmeticException:   /   by   zero  
  at   PO.main(PO.java(Compiled   Code))Top

9 楼awaysrain(绝对零度)(既然选择了远方就要日夜前行)回复于 2004-12-01 14:23:33 得分 2

Celeron   2.4G     256M  
  direct   Int:78   millisecond,   speed   262M/s  
  Double:281   millisecond,   speed   72M/s  
   
  Int:531   millisecond,   speed   38M/s  
  Double:360   millisecond,   speed   56M/sTop

10 楼GoldShield(李柏岑)回复于 2004-12-01 14:30:33 得分 0

偶的居然用不起Top

11 楼zhaohao19853(小人物)回复于 2004-12-01 14:31:51 得分 1

up  
  Top

12 楼cyck02(QQ)回复于 2004-12-01 14:38:13 得分 2

Celeron   1.1G     192M  
  hit   count:20M  
  direct   Int:719   millisecond,   speed   28M/s  
  Double:1547   millisecond,   speed   13M/s  
   
  Int:1140   millisecond,   speed   17M/s  
  Double:1422   millisecond,   speed   14M/s  
   
  再次运行时,数值有变  
  Top

13 楼d_selenite(计算机的奴隶)回复于 2004-12-01 15:02:28 得分 2

PIII   733/512M  
   
  hit   count:20   M  
   
  direct   Int:560   millisecond,   speed   36M/s  
  Double:942   millisecond,   speed   21M/s  
   
  Int:1261   millisecond,   speed   16M/s  
  Double:852   millisecond,   speed   24M/s  
   
  ==============================================================  
  另一台Xeon   2G/1G内存  
  hit   count:20   M  
   
  direct   Int:94   millisecond,   speed   217M/s  
  Double:313   millisecond,   speed   65M/s  
   
  Int:578   millisecond,   speed   35M/s  
  Double:329   millisecond,   speed   62M/s  
   
   
   
   
  多运行几次发现结果出入比较大,此测试程序有问题Top

14 楼oct14(穿山甲)回复于 2004-12-01 15:24:32 得分 0

To   d_selenite:  
   
  由于考虑到jvm缺省分配的heap只有64M,再有一些兄弟的机子内存不是很多,  
  因此,测试程序只开了24M的数据(int   8M,double   16M),受各种各样缓存的影响较大。  
   
  总的来说,第一次运行的结果比较准确。  
  连续运行有10-30%的偏差可以接受。  
   
  兄弟的机子如果性能强劲,比如xeon的机子,可能尝试开240M的数据,既将main中第一行  
  multi改为1,第二行int   size=2*1024*1024;改为int   size=20*1024*1024;  
  这样结果会更稳定。  
   
  Top

15 楼sourceid()回复于 2004-12-01 15:38:45 得分 2

Celeron   1.7G   ,256M,   jdk1.5  
   
   
  hit   count:20   M  
   
  direct   Int:272   millisecond,   speed   75M/s  
  Double:383   millisecond,   speed   53M/s  
   
  Int:809   millisecond,   speed   25M/s  
  Double:443   millisecond,   speed   46M/s  
  Top

16 楼xl5550(风中的沙)回复于 2004-12-01 16:05:20 得分 3

P4   2.53GHz  
  512   DDR  
   
   
  hit   count:20   M  
   
  direct   Int:79   millisecond,   speed   259M/s  
  Double:250   millisecond,   speed   81M/s  
   
  Int:500   millisecond,   speed   40M/s  
  Double:250   millisecond,   speed   81M/sTop

17 楼rickyhy(牛耳超人)回复于 2004-12-01 16:55:31 得分 2

P4   1.8GHz  
  512   DDR  
   
  hit   count:20   M  
   
  direct   Int:94   millisecond,   speed   217M/s  
  Double:422   millisecond,   speed   48M/s  
   
  Int:718   millisecond,   speed   28M/s  
  Double:407   millisecond,   speed   50M/sTop

18 楼zhyp178(流星)回复于 2004-12-01 17:34:23 得分 2

P4   2.4GHz  
  512   DDR  
  hit   count:20   M  
  direct   Int:62   millisecond,   speed   330M/s  
  Double:344   millisecond,   speed   59M/s  
  Int:625   millisecond,   speed   32M/s  
  Double:250   millisecond,   speed   81M/s  
  Top

19 楼oct14(穿山甲)回复于 2004-12-02 10:47:23 得分 0

奇怪,为什么方法调用的整数运算会这么慢?还赶不上双精度运算?(最后两指标)Top

20 楼Karv(Karv)回复于 2004-12-02 11:01:11 得分 2

p4   2.26(2.4G)  
  ddr   512M  
   
  hit   count:20   M  
   
  direct   Int:109   millisecond,   speed   187M/s  
  Double:313   millisecond,   speed   65M/s  
   
  Int:219   millisecond,   speed   93M/s  
  Double:296   millisecond,   speed   69M/sTop

21 楼prcgolf(小鸟)回复于 2004-12-02 11:51:00 得分 1

upTop

22 楼fuwang(古代是many to one,过去是one to one,现在是many to many)回复于 2004-12-02 12:18:22 得分 2

hit   count:20   M  
   
  direct   Int:109   millisecond,   speed   18  
  Double:282   millisecond,   speed   72M/s  
   
  Int:500   millisecond,   speed   40M/s  
  Double:281   millisecond,   speed   72M/sTop

23 楼xue_sharp(只想平凡的生活到老)回复于 2004-12-02 13:01:44 得分 2

PM   1.5G   768M  
   
  hit   count:20   M  
   
  direct   Int:100   millisecond,   speed   204M/s  
  Double:161   millisecond,   speed   127M/s  
   
  Int:460   millisecond,   speed   44M/s  
  Double:181   millisecond,   speed   113M/sTop

24 楼zcjl()回复于 2004-12-02 14:28:52 得分 2

Celeron   2.0GHz  
  504M   DDR  
  ----------------------------------------------  
   
  hit   count:20   M  
   
  direct   Int:94   millisecond,   speed   217M/s  
  Double:312   millisecond,   speed   65M/s  
   
  Int:641   millisecond,   speed   31M/s  
  Double:312   millisecond,   speed   65M/sTop

25 楼kooris10(kooris10)回复于 2004-12-02 14:38:15 得分 3

hit   count:20   M  
   
  direct   Int:63   millisecond,   speed   325M/s  
  Double:203   millisecond,   speed   100M/s  
   
  Int:375   millisecond,   speed   54M/s  
  Double:187   millisecond,   speed   109M/sTop

26 楼kooris10(kooris10)回复于 2004-12-02 14:39:48 得分 0

补充一下机器配置(着急就忘记了):  
  P4   3.0G   (双内核)  
  512M   DDR400   双通道  
  Top

27 楼superman421(38度的雪)回复于 2004-12-02 14:42:33 得分 2

Celeron   2.4  
  512   DDR  
  ----------------------------------  
  hit   count:20   M  
   
  direct   Int:125   millisecond,   speed   163M/s  
  Double:359   millisecond,   speed   57M/s  
   
  Int:297   millisecond,   speed   68M/s  
  Double:360   millisecond,   speed   56M/sTop

28 楼will52000(正式场合不要再写错别字)回复于 2004-12-02 14:55:06 得分 2

p4   2.26G  
  512   DDR  
  ----------------------------------  
  hit   count:20   M  
   
  direct   Int:125   millisecond,   speed   256M/s  
  Double:359   millisecond,   speed   72M/s  
   
  Int:297   millisecond,   speed   37M/s  
  Double:360   millisecond,   speed   78M/s  
  Top

29 楼lEFTmOON(我的小站(www.ismyway.com))回复于 2004-12-02 15:16:24 得分 2

P4   2.4G/512M   DDR   333  
  -----------------------------------  
  hit   count:20   M  
   
  direct   Int:79   millisecond,   speed   259M/s  
  Double:250   millisecond,   speed   81M/s  
   
  Int:484   millisecond,   speed   42M/s  
  Double:250   millisecond,   speed   81M/sTop

30 楼kuki84(天道酬勤)回复于 2004-12-02 15:16:46 得分 0

80286  
  64K  
  ----------------------------------  
  hit   count:20000   H  
   
  Top

31 楼will52000(正式场合不要再写错别字)回复于 2004-12-02 15:20:13 得分 0

第二步整数运算比双精度慢的原因是switch语句太耗时间Top

32 楼oct14(穿山甲)回复于 2004-12-02 16:32:05 得分 0

To:will52000  
   
  双精度用的也是switch,两都是一样的啊。  
   
  另:switch会比if慢吗?我觉行switch的实现可能和hash差不多,应该是O(1),应该比if快吧?Top

33 楼oct14(穿山甲)回复于 2004-12-04 12:18:31 得分 0

看来没人用amd的cpu啊。Top

34 楼zealVampire(白鹤泉)回复于 2004-12-04 16:17:50 得分 0

嘿嘿偶duron的   还是不测好了:)   谁用barton之类的上来show   show   撒Top

相关问题

  • java运行
  • UltraEdit java 编译运行设置 (中午 刚刚整理处理 给其它有用的兄弟)
  • 运行JAVA程序
  • java 运行问题!
  • java运行问题
  • 在REDHAT 7.0上运行java
  • java运行exception问题,急!!!
  • JAVA运行环境问题
  • java 的运行问题
  • 关于java的运行

关键词

  • pc
  • sina
  • smartlize
  • datatype
  • 速度
  • 运算
  • mint
  • vip
  • po
  • final

得分解答快速导航

  • 帖主:oct14
  • smallnest
  • drugon
  • 123xxx
  • tigeryu
  • windindance
  • qiyongjun2003
  • awaysrain
  • zhaohao19853
  • cyck02
  • d_selenite
  • sourceid
  • xl5550
  • rickyhy
  • zhyp178
  • Karv
  • prcgolf
  • fuwang
  • xue_sharp
  • zcjl
  • kooris10
  • superman421
  • will52000
  • lEFTmOON

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo