[Перевод] Когда вызовы функций через внешний интерфейс быстрее нативных вызовов C
|
|
Понедельник, 04 Июня 2018 г. 16:29
+ в цитатник
Дополнено: хорошая дискуссия на Hacker News
Дэвид Ю на GitHub разработал
интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces,
FFI).
Он создал файл общего объекта (
.so
) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.
Для C «FFI» он использовал стандартную динамическую компоновку, а не
dlopen()
. Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.
Самый удивительный результат бенчмарка — то, что FFI от
LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать дальше -> https://habr.com/post/413181/?utm_source=habrahabr&utm_medium=rss&utm_campaign=413181
Метки:
Программирование
Lua
LuaJIT
FFI
PLT
JIT-
компиляция
GOT
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-