2010-02-05 3 views
7

Каковы ограничения/ограничения при компиляции источника Erlang .erl с опцией +native по сравнению с обычной «не родной» компиляцией?Каковы ограничения/ограничения компиляции с помощью «+ native»?

, связанные с: Erlang OTP release compiles with HiPE?

+0

Спасибо, мне просто интересно, почему бег не ускорил мою программу. С + native он работает в два раза быстрее. – Koistinen

ответ

11

Функциональность для трассировки, точки останова и пошагово, что ЛУЧ эмулятор обеспечивает не доступны в родной скомпилированный код. Существует также ограничение на то, что собственный код на самом деле не выгружается из памяти при загрузке более новых версий одного и того же модуля. (Это может быть проблемой, если у вас есть долговременная система, в которой вы постоянно обновляете модули или генерируете и компилируете модули динамически.)

Кроме того, при переходе между нативным кодом и эмулированным кодом BEAM есть небольшие накладные расходы, поэтому вы следует избегать такого переключения режимов в узкой петле, где скорость имеет значение. Предпочтительно скомпилировать все тесно связанные модули с родными и, если возможно, с самыми важными стандартными библиотечными модулями.

Наконец, хотя нативный компилятор достаточно хорошо протестирован, вероятность ошибки компилятора в HiPE немного выше, чем ошибка в коде эмулятора BEAM (хотя, вероятно, не выше, чем ошибок в GCC) поэтому вы можете столкнуться с большим риском системных сбоев. В наши дни это довольно редко.

Таким образом, основное место, где родная компиляция, вероятно, пока не рекомендуется, находится в автономных продуктах (таких как сервер черных ящиков, которые вы доставляете заказчику), где стабильность, удаленная отладка и низкая память использование - ваша главная забота, а скорость вычислений обычно отсутствует.

+0

«основное место, где родная компиляция, вероятно, сейчас не рекомендуется, находится в автономных продуктах»: похоже, это контрастирует с тем, что @rvidring говорит в связанном сообщении. – jldupont

+0

Кажется, я не могу найти сообщение, на которое вы ссылаетесь. Указатель? – RichardC

+3

Что я сказал? :-) Кажется, я тоже этого не найду. – rvirding

Смежные вопросы