我编译并尝试在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实际上是“值得”?
答案 0 :(得分:4)
所以我收到了libjit邮件列表上某人的回复。显然,使用jit_function_to_closure为jit_function_t对象创建一个C闭包,然后可以从您的代码中本地调用它。
HTH