Неоднократно слышал, что:
-
leave
медленнее, чемmov esp, ebp pop ebp
-
enter N, 0
медленнее, чемpush ebp mov ebp, esp sub esp, N
-
stosd
медленнее, чемmov [es:edi], eax add edi, 4
-
repne scasb
медленнее, чем наивный strchr()
и так далее.
Вопрос: почему? Не похрен ли, одна команда развернётся в 10 микроопераций или четыре команды развернутся в столько же? В первом случае даже нагрузка на декодер меньше.