我想在我的J2ME(MIDP 2.0)程序中使用浮點數。
我不需要高精度,所以我正在考慮選擇float
類型。在J2ME中實現最高性能的浮點數據類型
但是,在我看來,我讀了一篇Java文章,其中說double
更好地支持處理器,所以速度更快。
我正在用這些數字進行很多操作,所以性能對我很重要。
現在的問題是,這些數據類型中哪一個工作得更快在J2ME?
我想在我的J2ME(MIDP 2.0)程序中使用浮點數。
我不需要高精度,所以我正在考慮選擇float
類型。在J2ME中實現最高性能的浮點數據類型
但是,在我看來,我讀了一篇Java文章,其中說double
更好地支持處理器,所以速度更快。
我正在用這些數字進行很多操作,所以性能對我很重要。
現在的問題是,這些數據類型中哪一個工作得更快在J2ME?
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;
}
嘗試在真實設備執行這些方法來衡量性能差別它不是太大顯著。
你有這方面的證據嗎? – 2010-11-14 12:03:43
@BlaXpirit更新了答案 – 2010-11-14 12:15:34
正如所有性能問題的規則:測量它。例如,你可以用浮動來編寫你的程序,測量它的性能(顯然在目標平臺上),做一個serach&replace來加倍,再次測量性能,然後比較。 – meriton 2010-11-14 12:00:49
那麼,這是J2ME,一切都可能發生...在模擬器'雙'可能會更好,但在實際的手機'浮動'可以贏。 – 2010-11-14 12:02:41
這就是爲什麼你會在目標設備上進行測量的原因:-) – meriton 2010-11-14 12:04:06