Ну базовое сравнение должно либо:
добавьте 1 к l, сравните результат с r
или
вычтите 1 из r и сравните результат с l
Все современные аппаратные средства будут иметь одинаковую необработанную производительность для любой операции (где сложение и вычитание любого собственного типа данных имеет одинаковую производительность с точки зрения циклов выполнения и передачи побочных эффектов).
Единственный способ, которым это будет иметь какой-либо эффект, если:
одна из l или r является известной константой во время компиляции. например.
l + 1 < 5
5 + 1 < r
в этом случае плохой оптимизирующий компилятор может не осознавать, что может преобразовать первый в l < 4
но все Java-компиляторы должны определить, что второй случай 6 < r
Другой вариант, если типы данных l и r отличаются.
Операция:
- сложение / вычитание с плавающей запятой, затем сравнение с int
стихи
- интегральное сложение / вычитание, тогда сравнение с двойным может отличаться.
Справедливо сказать, что вероятность того, что это серьезная проблема в вашем приложении, ничтожно мала, поскольку стоимость цикла любого из них незначительна по сравнению с ошибкой в конвейере любых ветвлений, связанных с решением.
Также приличный JIT может выполнять все виды оптимизаций по отношению к окружающему коду, которые перевешивают выполненную микрооптимизацию.