Самое важное отличие состоит в том, что оболочка интерпретируется, тогда как скомпилированный код ... ну ... скомпилирован.Это имеет заметную разницу в скорости выполнения и использовании памяти функцией.Другими словами, вы можете обнаружить, что интерпретируемый вариант медленнее или использует всю вашу память, а скомпилированная версия - нет.
Эта проблема укусила многих молодых программистов на Erlang.Он или она думает, что Erlang довольно медленный по сравнению с другими языками, в то время как на самом деле это тест интерпретируемого кода на скомпилированный.
Этот пункт является защитной мерой.По сути, интерпретатор и компилятор должны согласовать весь ввод / вывод функции.Но, к сожалению, это не всегда так.На практике интерпретатор и компилятор являются различными механизмами выполнения и, следовательно, могут отличаться.Если вы нативно компилируете через HiPE, изменения могут быть еще больше.Обычно проблемы возникают вокруг чисел с плавающей точкой IEEE 754.