当涉及脚本解释器时,例如Rhino,Google V8,Python等-仅给出一串脚本语言,是否有任何通用方法来确定底层本机方法?
在某些时候,这些解释器是否将带有字符串的哈希映射用于键?还是有很多字符串相等性测试和分支?
解决方法:
他们通常将哈希映射与字符串键一起使用,但是通常会缓存功能查找的结果,以避免在数纳秒后再次进行完全相同的查找.
当然,如果发生某些疯狂的事情,例如程序分配给或删除该函数,则必须清除缓存.
一旦填充了缓存,JIT编译器就可以使用inline caching使可预测的函数调用运行得非常快.
编译器甚至可以吐出直接调用底层函数的机器代码.同样,如果程序替换或删除了该功能,则编译后的代码将变为无效;因此,解释器必须有一种方法可以检测到这种情况并更新或丢弃无效的JIT代码.