加载中...

内联缓存(Inline Caching,IC)是动态语言运行时的核心加速技术:方法调用或属性访问的目标取决于运行时类型,首次查找后把「类型到目标」的结果缓存在调用点本身,下次同类型直接命中,免去昂贵的动态查找。
技术源于 1984 年 Smalltalk-80 的 Deutsch 与 Schiffman;Self 语言项目发展出多态内联缓存(PIC),在一个调用点缓存多个类型分支。按调用点观察到的类型数,分为单态、多态与超多态(megamorphic,退化为全局缓存)。
IC 同时是剖析器:JIT 读取缓存记录的类型分布,做类型特化与投机内联;V8 用隐藏类(hidden class/shape)给对象布局编号,使 IC 检查退化为一次指针比较。
IC 及其衍生技术是 JavaScript、Ruby、Python 等动态语言接近静态语言性能的关键;保持调用点单态也因此成为这类语言的性能编写守则。

登录 后参与讨论
暂无讨论,来发表第一条评论吧