по оптимизации кода прочитал, что процессору легче выполнить a=a+a или сдвиг по биту нежели a=a*2. это правда оптимизирует производительность скомпилированого приложения?
Правда. Команды умножения и деления очень тормозные. И если можно - то лучше использовать сдвиги вместо MUL/DIV.
Если речь об асме, то да. Если на ЯВУ, то скорее всего произойдёт преобразование в сумму и асмовый код будет эквивалентен.
Я бы не стал сегодня однозначно так говорить. Машинные коды в современном процессоре это уже какая-то прослойка. Так что вполне вероятно внутри проц знает, как быстро умножать.
Умножение есть умножение))
На SkylakeX например Latency у команд такое: MUL, IMUL - 4 DIV - 26 ADD, SUB, SHR, SHL - 1 На Zen3 тоже схожая картина.
твое время на осознание о медленности этих команд в разы медленнее этих команд. незаморачивайся
деление обычно очень тормозное, с умножением не всё так однозначно
Обсуждают сегодня