Когда-нибудь отличалась производительность между операторами Java >> и >>> сдвига вправо?
-
22-09-2019 - |
Вопрос
Есть ли когда-нибудь основания думать, что операторы >> (со знаком) и >>> (без знака) сдвига правых битов в Java будут работать по-разному?Я не могу обнаружить никакой разницы на своем компьютере.
Это чисто академический вопрос;я уверен, что это никогда не станет узким местом.Я знаю:лучше всего написать, что вы имеете в виду в первую очередь;используйте >>, например, для деления на 2.
Я предполагаю, что все сводится к тому, в каких архитектурах какие операции реализованы в виде инструкции.
Решение
Нет.Ваш компилятор переведет их в байт-код, а JVM интерпретирует байт-код для вашей архитектуры.Я думаю, можно с уверенностью предположить, что в вашей архитектуре есть набор команд, который включает в себя выполнение обеих операций за несколько тактов.
В любом случае, есть разница в поведении этих операторов, так что вы не можете просто поменять их местами.