Эрланг - С и Эрланг

В erlang есть некоторые общие библиотечные функции, которые намного медленнее, чем их эквивалент c.

Возможно ли, чтобы код c выполнял двоичный разбор и сжатие чисел, а также имел процессы порождения erlang для запуска кода c?

7
задан BAR 27 December 2015 в 03:50
поделиться

3 ответа

Конечно, C будет быстрее, в крайнем случае, после оптимизации. Если под «быстрее» вы подразумеваете «быстрее бежать».

Erlang был бы намного быстрее для написания. В зависимости от требований к скорости, которые у вас есть, Erlang, вероятно, будет «достаточно быстрым», и это сэкономит вам дни поиска ошибок в C.

C-код будет быстрее только после оптимизации. Если вы потратите одинаковое количество времени на C и Erlang, вы получите примерно одинаковую скорость (обратите внимание, что я учитываю время, затрачиваемое на отладку и исправление ошибок в этой оценке времени. Которое будет намного меньше в Erlang).

Итак:

faster writing = Erlang
faster running (after optimisations) = C
faster running without optimisations = any of the two

Выбирай.

4
ответ дан 7 December 2019 в 03:09
поделиться

Простая многопоточность не так интересна для erlang. Простота потоковой передачи + передача сообщений и OTP-фреймворк - вот что замечательно в erlang. Если вам нужно вычислить числа, используйте что-то вроде ocaml, python, haskell. Erlang отлично справляется с вычислением чисел.

Синтаксический анализ двоичных файлов - одна из тех вещей, с которыми erlang лучше всего справляется, возможно, лучше всего для этого. Книга Джо по программированию на erlang очень хорошо описывает все, и ее использование не так дорого. Здесь также рассказывается об интеграции кода C и приводится пример. исходный код доступен из прагматического программирования без необходимости покупать книгу, вы можете использовать grep #include или что-то в этом роде.

1
ответ дан 7 December 2019 в 03:09
поделиться

Прежде всего напишите всю логику системы на Erlang, затем реализуйте обработку двоичных файлов на C. Использование NIF (это своего рода интерфейс для C) довольно прямолинейно и прозрачно для остальной системы. Вот еще одна ветка о разговоре с C Запустить блок кода C в Erlang .

Прежде чем взламывать C, убедитесь, что вы проверили текущую реализацию. Вполне возможно, что он удовлетворит ваши потребности, особенно в последнем выпуске Erlang/OTP (R14), в котором представлены большие улучшения в обработке двоичных файлов.

1
ответ дан 7 December 2019 в 03:09
поделиться