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

Является ли более производительным с точки зрения вычислений сравнение меньше/больше чем с меньше/больше или равно?

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

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

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


person heikkim    schedule 19.11.2014    source источник
comment
тесно связан: ‹ быстрее, чем ‹=?   -  person davidhigh    schedule 19.11.2014
comment
Это зависит от целевой архитектуры, поэтому я не думаю, что на этот вопрос можно ответить в целом.   -  person harold    schedule 19.11.2014


Ответы (1)


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

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

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

person Ira Baxter    schedule 19.11.2014