哪些技术可以促进有效的操作码分派(dispatch)以进行快速解释器?是否存在一些仅在现代硬件上有效的技术,而另一些由于硬件的进步而不再有效的技术?在易于实现,速度和可移植性之间必须做出哪些权衡?
我很高兴Python的C实现最终超越了用于操作码分发的简单switch (opcode) {...}
实现,成为了编译时选择的间接线程,但是我不满意他们花了20年的时间才实现。也许,如果我们在stackoverflow上记录这些策略,那么下一种语言将会变得更快。
最佳答案
关于不同类型的调度,有许多论文:
M.Anton Ertl和David Gregg,Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreters在2003年6月于加利福尼亚州圣地亚哥举行的ACM SIGPLAN 2003编程语言设计与实现 session (PLDI 03)的 session 记录中,第278-288页。
M.Anton Ertl和David Gregg, The behaviour of efficient virtual machine interpreters on modern architectures,在第七届欧洲并行计算 session 论文集(Europar 2001),第403-412页,LNCS 2150,曼彻斯特,2001年8月。
Yunhe Shi in his PhD thesis提供了一个很好的摘要。
另外,someone discovered a new technique几年前,它是有效的ANSIC。