Почему следует избегать реализации Biginteger в Java - PullRequest
5 голосов
/ 06 октября 2011

Существует правило PMD , в котором говорится, что следует избегать создания экземпляров BigInteger или BigDecimal, если существует предопределенная константа.

BigInteger.ZERO

// instead of

new BigInteger(0)

Есть ли какое-либо иное преимущество, кроме сохранения нескольких байтов?

Ответы [ 5 ]

6 голосов
/ 06 октября 2011

позволяет избежать выделения этих нескольких байтов и необходимости собирать их позже

в узком цикле, который может иметь значение

2 голосов
/ 06 октября 2011

Возможно производительность, если вы создаете много 0.Альтернативой для аргумента long / int является

BigInteger.valueOf(0)

, который возвращает BigInteger.ZERO, когда аргумент равен 0

2 голосов
/ 06 октября 2011

Да, сохраняя несколько инструкций JVM.

1 голос
/ 06 октября 2011

Использование кэшированных значений может значительно улучшить производительность в пространстве и времени.

1 голос
/ 06 октября 2011

Вместо создания нового объекта с new BigInteger лучше использовать один статический объект, который создается один раз при загрузке класса BigInteger.Это также верно для использования valueOf всех типов упаковок.

...