的我有一段代碼,需要重複計算下面...性能BigDecimal.valueOf(雙d)
double consumption = minConsumption + (Math.random() * ((maxConsumption - minConsumption) + 1));
currentReading = currentReading.add(BigDecimal.valueOf(consumption)).setScale(2, RoundingMode.HALF_EVEN).stripTrailingZeros();
這是用於產生用於檢測隨機肥胖型信息。它似乎比我預期的要慢,我發現緩慢的部分是BigDecimal.valueOf(consumption)
,並且由於內部發生的Double.toString()
調用而緩慢。
總體要求是生成一個隨機在最小值和最大值之間的消耗值。然後將其添加到currentReading以獲得新的讀數。
有什麼辦法可以提高這個性能嗎?也許通過避免double - > BigDecimal轉換。我需要的結果是一個BigDecimal,但我不介意如何在這之前完成隨機計算。
你的意思BigDecimal.valueOf(雙)? –
是什麼讓你覺得這是一個性能問題?你有什麼數據嗎?如果不是,我懷疑你有過早的優化。 – duffymo
我已經運行它,並暫停了很多。調試程序在Double.toString()代碼中停止該調用的90%時間。 –