Отказ/Предупреждение:
Это микро-оптимизации, и никогда не будет влиять на эффективность вашей программы таким образом, что поддается измерению пользователями. Если вы отключите все оптимизаторы компилятора и запустите отличный профилировщик, вы сможете количественно оценить эффекты, но ни один пользователь не заметит.
Это особенно верно для вашей ситуации, когда данный код запускается каждые несколько секунд. Возможно, потраченное время профилирования будет лучше потрачено на улучшение других частей вашего приложения.
Кроме того, в этих ситуациях читаемость всегда должна преобладать над микро-оптимизацией без узких мест (хотя мой ответ ниже учитывает только эффективность исполнения во время выполнения). Поэтому мой рекомендуемый код для вас в этой ситуации - x=true
, так как это проще всего читать и понимать.
Наконец, если добавление проверки улучшит скорость, компилятор, вероятно, уже знает это и сделает это за вас, поэтому вы не ошибетесь с x=true
(вот почему вы должны отключить оптимизацию перед запуском профилировщика).
Ответ:
Единственный верный способ понять это является профилированием. Вы можете обнаружить, что тест 0 (x = false) в основном не требует времени, и поэтому его стоит включить из-за времени, которое он сохраняет, когда x оказывается истинным. Или вы можете обнаружить, что тест занимает достаточно много времени, чтобы тратить слишком много времени, когда x оказывается ложным.
Я предполагаю, что тест не требуется. Это потому, что 0-тестирование и другие побитовые операции (и, или, и т. Д.) Происходят так быстро, что я обычно отношусь к ним как к тому же элементарному количеству времени. И если 0-тестирование занимает столько же времени, сколько и операция ИЛИ (установка в true), то 0-тест является избыточной тратой времени. Профилирование может показаться мне неправильным, и моя догадка основана на свободном предположении о побитовых операциях, поэтому, если вы решите запустить профилировщик и понять это, я определенно буду интересоваться результатами.
Это не будет иметь каких-либо заметных различий (если у установки x не было побочных эффектов, таких как диспетчеризация событий, вызвавших реакцию слушателей и т. Д., И в этом случае ответ «это зависит»). Сделайте все, что имеет смысл в вашей программной логике. –