2014-11-19 1 views
0

ли вычислительно более производительным для сравнения меньше/больше, чем над меньше/больше или равно?ли производительность «меньше/больше, чем» лучше, чем «меньше/больше или равно»

Интуитивно можно было подумать, что меньше/больше немного лучше.

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

Компилятор может устранить, например. меньше или равно с менее, увеличивая границу на единицу, но если граница «живая», это невозможно.

+1

тесно связан: [Является <быстрее, чем <=?] (Http://stackoverflow.com/questions/12135518/is-faster-than) – davidhigh

+1

Это зависит от целевой архитектуры, поэтому я не думаю, что этот вопрос можно ответить в целом. – harold

ответ

2

Практически на каждом современном процессоре есть команды сравнения/jumpless и compare/jumplessequal, которые занимают ровно столько же времени, потому что они проходят через точно такой же аппаратный модуль, включая бит «равно».

Это случай, когда вычисление «не менее» (и его «меньше») является бесплатным; для значений без знака это эквивалентно переносу из вычитания дополнительного кода twos, которое уже выполняют процессоры. Вычислить равное сложнее: CPU должен определить, что все биты результата вычитания равны нулю; для 64-битных процессоров, это наивно 64-битные и-ворота, которые довольно большие и, таким образом, медленны. Разработчики ЦП знают это и строят очень быстрые сети, чтобы быстро обнаружить это, так что это не узкое место.

Таким образом, ответ «НЕТ», или чтобы быть ясным, они занимают одинаковое количество времени, и нет никаких компиляторов, чтобы изменить это.