私は繰り返し、次の計算に必要なコードの部分を持っている...パフォーマンス(ダブル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に追加してください。
これのパフォーマンスを向上させる方法はありますか?おそらくダブル→BigDecimal変換を避けることによって。私は結果をBigDecimalにする必要がありますが、その前にランダム計算がどのように行われているか気にしません。
ことによってそれを割るあなたがBigDecimal.valueOf(double)を意味するのですか? –
これはパフォーマンス上の問題だと思いますか?データはありますか?そうでない場合は、あなたが早すぎる最適化をしていると思われます。 – duffymo
私はそれを実行し、多くの一時停止をヒットしました。デバッガがその呼び出しでDouble.toString()コード内で停止する時間の90%。 –