Функциональность для трассировки, точки останова и пошагово, что ЛУЧ эмулятор обеспечивает не доступны в родной скомпилированный код. Существует также ограничение на то, что собственный код на самом деле не выгружается из памяти при загрузке более новых версий одного и того же модуля. (Это может быть проблемой, если у вас есть долговременная система, в которой вы постоянно обновляете модули или генерируете и компилируете модули динамически.)
Кроме того, при переходе между нативным кодом и эмулированным кодом BEAM есть небольшие накладные расходы, поэтому вы следует избегать такого переключения режимов в узкой петле, где скорость имеет значение. Предпочтительно скомпилировать все тесно связанные модули с родными и, если возможно, с самыми важными стандартными библиотечными модулями.
Наконец, хотя нативный компилятор достаточно хорошо протестирован, вероятность ошибки компилятора в HiPE немного выше, чем ошибка в коде эмулятора BEAM (хотя, вероятно, не выше, чем ошибок в GCC) поэтому вы можете столкнуться с большим риском системных сбоев. В наши дни это довольно редко.
Таким образом, основное место, где родная компиляция, вероятно, пока не рекомендуется, находится в автономных продуктах (таких как сервер черных ящиков, которые вы доставляете заказчику), где стабильность, удаленная отладка и низкая память использование - ваша главная забота, а скорость вычислений обычно отсутствует.
Спасибо, мне просто интересно, почему бег не ускорил мою программу. С + native он работает в два раза быстрее. – Koistinen