Здравствуйте, gear nuke, Вы писали:
Pzz>>Выяснилось, что у Ocaml'а вызов функции более эффективно устроен на
Pzz>>ассемблерном уровне.
GN>А не было ли это причиной того, что копмилятор OCaml приводил рекурсивный вызов к простому циклу?
GN>Даже если в случае с OCaml это было не так, то это всё равно может быть примером почему С++ способен проиграть. Существующие компиляторы плохо умеют оптимизировать такое. Можно, конечно, руками всё делать и выигрывать — ценой читабельности. Вполне разумно, что в языках, где рекурсия одна из основных фич компилятор должен уметь делать такое хорошо.
Да даже gcc умеет разворачивать хвостовую рекурсию — это простейшая совершенно оптимизация. Дело не в этом.
Просто откомпилируйте что-нибудь простое на окамле и си++ — увидите в чем разница