2010-11-14 30 views
2

我想在我的J2ME(MIDP 2.0)程序中使用浮点数。
我不需要高精度,所以我正在考虑选择float类型。在J2ME中实现最高性能的浮点数据类型

但是,在我看来,我读了一篇Java文章,其中说double更好地支持处理器,所以速度更快。

我正在用这些数字进行很多操作,所以性能对我很重要。

现在的问题是,这些数据类型中哪一个工作得更快在J2ME

+1

正如所有性能问题的规则:测量它。例如,你可以用浮动来编写你的程序,测量它的性能(显然在目标平台上),做一个serach&replace来加倍,再次测量性能,然后比较。 – meriton 2010-11-14 12:00:49

+1

那么,这是J2ME,一切都可能发生...在模拟器'双'可能会更好,但在实际的手机'浮动'可以赢。 – 2010-11-14 12:02:41

+0

这就是为什么你会在目标设备上进行测量的原因:-) – meriton 2010-11-14 12:04:06

回答

1

float和double之间的性能差异并不那么显着。

如果你正在做这些操作的频率比浮动更好,它也会占用更少的空间。

更新:

public long sumDouble(){ 

     double[] arr = new double[1000]; 
     for(int i = 0 ;i < 1000;i++){ 
      arr[i]=new Random().nextFloat(); 
     } 
     float sum = 0.0f; 
     long start = System.currentTimeMillis(); 
     for(int i = 0 ;i < 1000;i++){ 
      sum+=arr[i]; 
     } 
     System.out.println(""+sum); 
     long end = System.currentTimeMillis(); 
     return end - start; 
    } 
    public long sumFloat(){ 

     double[] arr = new double[1000]; 
     for(int i = 0 ;i < 1000;i++){ 
      arr[i]=new Random().nextDouble(); 
     } 
     double sum = 0.0f; 
     long start = System.currentTimeMillis(); 
     for(int i = 0 ;i < 1000;i++){ 
      sum+=arr[i]; 
     } 
     System.out.println(""+sum); 
     long end = System.currentTimeMillis(); 
     return end - start; 
    } 

尝试在真实设备执行这些方法来衡量性能差别它不是太大显著。

+0

你有这方面的证据吗? – 2010-11-14 12:03:43

+0

@BlaXpirit更新了答案 – 2010-11-14 12:15:34