Производительность оператора сравнения (>,> =, <, <=) - PullRequest
12 голосов
/ 02 мая 2011

Если бы вы сравнили два целых числа, повлиял бы оператор на время, необходимое для сравнения? Например, учитывая:

if (x < 60)

и

if (x <= 59)

Что обеспечит наилучшую производительность или разница в производительности будет незначительной? Зависит ли результат от языка?

Я часто смешиваю использование этих операторов в своем коде. Любые мысли будут оценены.

Ответы [ 4 ]

11 голосов
/ 02 мая 2011

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

2 голосов
/ 02 мая 2011

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

1 голос
/ 02 мая 2011

Различия незначительны.Теоретически они могут зависеть от языка.

Как уже упоминалось в другом ответе, они также теоретически зависят от платформы.

См .: Оператор неравенства быстрее, чем оператор равенства?

0 голосов
/ 02 мая 2011

Практически нет разницы в производительности. Для процессоров CISC, как правило, вы будете иметь всевозможные инструкции ветвления, которые справляются со всей разницей <<=>> = и т. Д. В RISC может быть очень небольшая разница в производительности, хотя я серьезно сомневаюсь в этом!

...