Когда на самом деле стоит libjit?

Я скомпилировал и попытался профилировать первый урок в libjit (mul_add): — https://www.gnu.org/software/libjit/doc/libjit_3.html#SEC6

Однако при сравнении с нативным скомпилированным кодом он работает примерно в 1000 раз медленнее. При профилировании с Call Grind, некоторые из горячих точек, которые появляются:

jit_apply (17.5%)
jit_apply_builder_add_arguments(14.25%)
jit_type_normalize (9%)
jit_backtrace_push (7%)
jit_exception_clear_last (6.5%)
jit_thread_get_control (6.5%)
jit_type_get_param (5%)
and so on and so forth

У меня вопрос, я что-то здесь не так делаю? Кроме того, это постоянные затраты, которые всегда возникают при вызове функции libjit, или есть какой-то способ избавиться от этих затрат?

Кроме того, если это постоянные затраты, означает ли это, что существует определенный минимальный размер скомпилированной функции, после которого использование libjit действительно «стоит»?

4

Решение

Так что я получил ответ от кого-то из списка рассылки libjit. Очевидно, использование jit_function_to_closure создает замыкание C для объекта jit_function_t, которое затем может быть вызвано непосредственно из вашего кода.

НТН

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]