v8 中的内联缓存
Posted
技术标签:
【中文标题】v8 中的内联缓存【英文标题】:Inline Caching in v8 【发布时间】:2015-09-30 16:55:36 【问题描述】:我了解内联缓存仅在特定访问在同一位置重复执行时才有用。它不考虑单独进行的访问。
例如, for(i=0;i
在这里,内联缓存会很有帮助,因为每次访问都是独立进行的。但考虑关注
obj.x; 对象.x; .... 1000 次..
在这种情况下,内联缓存没有帮助。这是真的吗?
如果是这种情况,在不会重复的位置/访问处修补内联缓存存根有什么意义。
【问题讨论】:
好吧,你不能确定它们不会重复,因为它们所在的函数可能会被调用一百万次。除此之外,是的,在这种情况下它不是很有帮助。但至少可以说这是一种非常不寻常的编码实践。据我所知,内联缓存不知道上下文,并且总是使用,即使在完整的代码生成中也是如此。 【参考方案1】:内联缓存在函数调用中持续存在,因此即使是单个访问在函数内部时也会受益。无法知道函数会被调用多少次。
【讨论】:
以上是关于v8 中的内联缓存的主要内容,如果未能解决你的问题,请参考以下文章