次のコードを繰り返し計算する必要のあるコードがあります...
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にする必要がありますが、その前にランダム計算がどのように行われるかは気になりません。