Re[13]: C++ illegal instruction
От: Pzz Россия https://github.com/alexpevzner
Дата: 13.08.25 08:26
Оценка:
Здравствуйте, rg45, Вы писали:

Pzz>>А я по молодости разок-другой такое в продакшене применил (разумеется не с sin/cos, с какой-то другой парой функций с одинаковым прототипом). Сейчас бы я так делать не стал. Народ реально не догоняет (к огромному моему удивлению).


R>Я бы тоже не стал использовать такую конструкцию, и не только потому, что это ставит кого-то в тупик, а потому что выражение (flag ? sin : cos) имеет тип указателя на функцию. Т.е дополнительная косвенность появляется совершенно необосновано. Рассуждения примерно те же, что и в случае ++i vs i++. Подробнее здесь: 9. Не пессимизируйте преждевременно.


Это вообще не проблема. Вменяемый компилятор эту косвенность свернёт.

Более того, на процессоре, который поддерживает MOV с условием (ARM, относительно свежие x86), он таки может выбрать косвенность и сэконимить один переход, вычислив выражение в скобках без переходов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.