Сегодня на хорошем компиляторе совсем нет.
Во-первых, порядок операндов не имеет никакого значения для наборов инструкций, которые я видел. Во-вторых, если бы он был, любой достойный оптимизатор выбрал бы лучший.
Мы не должны слепо отклонять представление, хотя. Отзывчивость по-прежнему имеет значение, равно как и время расчета. Особенно когда вы пишете библиотечный код, вы не знаете, когда вас будут вызывать два миллиона раз подряд.
Кроме того, не все платформы созданы равными. Встраиваемые платформы часто страдают от некондиционных оптимизаторов из-за низкой вычислительной мощности и требований к обработке в реальном времени.
На настольных / серверных платформах вес сместился в сторону хорошо инкапсулированной сложности, которая реализует лучшие алгоритмы масштабирования.
Микрооптимизации вредны только тогда, когда они вредят чему-то другому, например читабельности, сложности или ремонтопригодности. Когда все остальное равно, почему бы не выбрать быстрее?
Было время, когда завершение цикла в нуле (например, путем обратного отсчета) на x86 действительно могло дать заметные улучшения для тесных циклов, поскольку DEC CX/JCXNZ
был быстрее (он все еще потенциально мог бы быть, так как мог сохранить регистр / доступ к памяти для сравнения; теперь оптимизация выполнения компилятора обычно выходит за рамки этого). То, что слышал твой друг, может быть искаженной версией этого.