У меня есть кусок кода, который должен периодически вычислять следующее ...
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, но я не возражаю против того, как случайный расчет делается до этого.