Давным-давно у меня застряла память, в которой говорится, что сравнение с нулем выполняется быстрее, чем любое другое значение (хм Z80).
В некотором C-коде, который я пишу, я хочу пропустить значения, в которых установлены все их биты. В настоящее время тип этих значений char
, но может измениться. У меня есть два варианта выполнения теста:
if (!~b)
/* skip */
и
if (b == 0xff)
/* skip */
Помимо того, что последний делает предположение о том, что b является 8-битным символом, тогда как первый не делает, будет ли первый когда-либо быстрее из-за старого трюка по сравнению с нулевой оптимизацией, или современные процессоры намного выше этого