2010-11-14 58 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