jak*_*gut 4 c performance inline function vm-implementation
我在C中编写了一个虚拟机,其中有一个调用表填充了指向函数的指针,这些函数提供了VM的操作码的功能.当虚拟机运行时,它首先解释一个程序,创建一个索引数组,该索引数组对应于所提供操作码的调用表中的相应函数.然后它循环遍历数组,调用每个函数直到它到达结尾.
每条指令都非常小,通常是一行.适合内联.问题是编译器不知道何时将调用任何虚拟机的指令,因为它是在运行时决定的,所以它不能内联它们.函数调用和参数传递的开销正在扼杀我的VM的性能.关于如何解决这个问题的任何想法?
以下是一些减少开销的选项:
fastcall(或类似的东西)以减少参数传递的开销最终,你将会进入JIT编译,在线分析和重新优化以及各种其他令人敬畏的东西.
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |