Пробовал в моем коде следующую возможную оптимизацию. (Обновление: вычитание происходит медленнее, что имеет смысл, поскольку это более сложная процедура).
Код:
if (bigK.compareTo(prevLevelChildrenCount) > 0)
в
if (bigK.subtract(prevLevelChildrenCount).signum() == 1)
Speed (Subtract vs compareTo) при использовании 100 000 000 раз итерационно для случайных чисел.
Является ли поведение biginteger одинаковым при использовании вычитания как целого в терминах переполнения?
Я нашел следующий вопрос, но считаю, что это не дубликат, потому что biginteger не имеет таких же ограничений, как целое. Но имеет ли он проблему переполнения?
Почему я не должен этого делать? Я сравниваю два положительных больших целых числа?
Я не понимаю, почему вы не должны, убедитесь, что это работает в первую очередь.
Какой из них должен быть быстрее? В моих собственных тестах вычитание работает быстрее.
Я не буду верить, что один быстрее, чем другой. Помните, что микро-оптимизация редко бывает продуктивной.
Является ли поведение biginteger одинаковым при использовании вычитания как целого в терминах переполнения.
Но имеет ли он проблему переполнения?
Нет, BigInteger
не будет переполняться. За связанный Javadoc,
Все подробности в Spec относительно переполнения игнорируются, поскольку BigIntegers выполнены в виде больших по мере необходимости для размещения результатов операции.
bigK
чтоbigK
иprevLevelChildrenCount
- этоBigInteger
. Когда вы говорите,I am comparing two positive big integers
, становится немного сомнительно, говорите ли вы оBigInteger
или больших значенияхint
.