当谈到脚本解释器时,如 Rhino、Google V8、Python 等 - 是否有任何通用方法来确定底层 native 方法,仅给出一串脚本语言?
在某些时候,这些解释器是否使用带有字符串的散列映射作为键?还是有很多字符串相等性测试和分支?
最佳答案
他们通常使用带有字符串键的 HashMap ,但函数查找的结果通常会被缓存,以避免在几纳秒后再次进行完全相同的查找。
当然,如果发生疯狂的事情,例如程序分配给或删除函数,则必须清除缓存。
JIT 编译器可以使用 inline caching使可预测的函数调用在填充缓存后运行得非常快。
编译器甚至可以吐出直接调用底层函数的机器代码。同样,如果程序替换或删除该函数,则编译后的代码将变得无效;因此解释器必须有办法检测这种情况并更新或丢弃无效的 JIT 代码。
关于python - 脚本语言解释器如何引用它们的底层函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907410/