libjit 什么时候真正值得
When is libjit actually worth it?
我编译并尝试在libjit(mul_add)中分析第一个教程:- https://www.gnu.org/software/libjit/doc/libjit_3.html#SEC6
但是,将其与本机编译代码进行比较时,它的运行速度大约慢了 1000 倍。在使用呼叫研磨进行分析时,出现的一些热点是:-
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 实际上是"值得的"?
所以我收到了libjit邮件列表中某人的回复。显然,使用 jit_function_to_closure 会为 jit_function_t 对象创建一个 C 闭包,然后可以从代码中本机调用该闭包。
呵呵
相关文章:
- 什么时候调用组成单元对象的析构函数
- 什么时候在C++中返回常量引用是个好主意
- 什么时候调用析构函数
- boost odeint什么时候真正调用观测者
- 编译器对数组声明大小的计算。什么时候发生?
- 什么时候最好在子进程中使用 CPU 或 I/O 密集型代码 [ C++ ]
- 您应该在什么时候创建自己的异常类型
- 我什么时候会默认(而不是删除)基类中的复制和移动操作
- 什么时候可以使用常量装饰调用我的重载函数?
- unordered_map什么时候返回 -1?
- QCoreApplication什么时候有效?
- sizeof(size_t) 和 sizeof(ptrdiff_t) 什么时候会有所不同?
- 什么时候用指针调用C++类构造函数
- 我不明白在这个例子中什么时候调用构造函数
- 如果真的需要std::move,我们应该什么时候声明右值refs
- P1008("prohibit aggregates with user-declared constructors")在实践中什么时候有用?
- 程序什么时候会创建多个堆
- 调用boost.asio的异步函数时,线程是什么时候创建的
- Swig/python : 什么时候需要 SWIG_init() ?
- libjit 什么时候真正值得