Что быстрее? Сравнение или назначение? - PullRequest
32 голосов
/ 26 мая 2009

Я немного занимаюсь кодированием, где я должен написать такой код:

if( array[i]==false )
    array[i]=true;

Интересно, стоит ли его переписать как

array[i]=true;

Возникает вопрос: сравнения выполняются быстрее, чем присвоения?

А как насчет различий от языка к языку? (контраст между java и cpp, например.)

ПРИМЕЧАНИЕ. Я слышал, что «преждевременная оптимизация - это корень всего зла». Я не думаю, что это применимо здесь:)

Ответы [ 12 ]

0 голосов
/ 26 мая 2009

Можно попробовать:

if(!array[i])
    array[i]=true;

Но на самом деле единственный способ узнать наверняка - это профилировать, я уверен, что практически любой компилятор посчитает сравнение с false ненужным и оптимизирует его.

0 голосов
/ 26 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...