javascript引擎v8内联缓存
正如我们所知,v8支持内联缓存以提高性能 有人能解释一下v8到底做了什么,以及它是如何提高性能的吗 如果给出一个例子,那就太好了 提前感谢。直接从 V8在第一次执行时将JavaScript源代码直接编译为机器代码。没有中间字节码,没有解释器。属性访问由内联缓存代码处理,当V8执行时,内联缓存代码可能会与其他机器指令一起修补 及 …V8通过预测此[对象的]类也将用于在同一代码段中访问的所有未来对象来优化属性访问,并使用类中的信息修补内联缓存代码以使用隐藏类。如果V8预测正确,则在单个操作中分配(或获取)属性值。如果预测不正确,V8将修补代码以删除优化 例如,从点对象访问属性x的JavaScript代码是:javascript引擎v8内联缓存,javascript,performance,v8,Javascript,Performance,V8,正如我们所知,v8支持内联缓存以提高性能 有人能解释一下v8到底做了什么,以及它是如何提高性能的吗 如果给出一个例子,那就太好了 提前感谢。直接从 V8在第一次执行时将JavaScript源代码直接编译为机器代码。没有中间字节码,没有解释器。属性访问由内联缓存代码处理,当V8执行时,内联缓存代码可能会与其他机器指令一起修补 及 …V8通过预测此[对象的]类也将用于在同一代码段中访问的所有未来对象来优化属性访问,并使用类中的信息修补内联缓存代码以使用隐藏类。如果V8预测正确,则在单个操作中分配(或
point.x
在V8中,为访问x生成的机器代码为:
# ebx = the point object
cmp [ebx,<hidden class offset>],<cached hidden class>
jne <inline cache miss>
mov eax,[ebx, <cached x offset>]
#ebx=点对象
cmp[ebx,],
jne
mov-eax,[ebx,]