BigInteger сравнить с вычитать + signnum ()

1

проблема

Пробовал в моем коде следующую возможную оптимизацию. (Обновление: вычитание происходит медленнее, что имеет смысл, поскольку это более сложная процедура).

Код:

   if (bigK.compareTo(prevLevelChildrenCount) > 0) 

в

 if (bigK.subtract(prevLevelChildrenCount).signum() == 1) 

Speed (Subtract vs compareTo) при использовании 100 000 000 раз итерационно для случайных чисел.

Изображение 174551

Вопрос:

Является ли поведение biginteger одинаковым при использовании вычитания как целого в терминах переполнения?

Я нашел следующий вопрос, но считаю, что это не дубликат, потому что biginteger не имеет таких же ограничений, как целое. Но имеет ли он проблему переполнения?

  • 1
    @ Джаррод Роберсон Это для biginteger. Это не совсем дубликат, так как те же ограничения / условия не применяются. Одинаково ли поведение с точки зрения переполнения?
  • 0
    Возможно, было бы полезно, если бы вы bigK что bigK и prevLevelChildrenCount - это BigInteger . Когда вы говорите, I am comparing two positive big integers , становится немного сомнительно, говорите ли вы о BigInteger или больших значениях int .
Показать ещё 11 комментариев
Теги:
biginteger

1 ответ

2
Лучший ответ

Почему я не должен этого делать? Я сравниваю два положительных больших целых числа?

Я не понимаю, почему вы не должны, убедитесь, что это работает в первую очередь.

Какой из них должен быть быстрее? В моих собственных тестах вычитание работает быстрее.

Я не буду верить, что один быстрее, чем другой. Помните, что микро-оптимизация редко бывает продуктивной.

Является ли поведение biginteger одинаковым при использовании вычитания как целого в терминах переполнения.
Но имеет ли он проблему переполнения?

Нет, BigInteger не будет переполняться. За связанный Javadoc,

Все подробности в Spec относительно переполнения игнорируются, поскольку BigIntegers выполнены в виде больших по мере необходимости для размещения результатов операции.

  • 0
    Так это более эффективно, чем использовать CompareTo? Или это зависит от используемых чисел и какие биты установлены на что?
  • 0
    @ maythesource.com Отредактировано. Остерегайтесь таких микрооптимизаций, они могут варьироваться в зависимости от платформы, архитектуры и реализации. Кроме того, микро-тесты обычно не надежны.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню