Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript引擎v8内联缓存_Javascript_Performance_V8 - Fatal编程技术网

javascript引擎v8内联缓存

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

正如我们所知,v8支持内联缓存以提高性能

有人能解释一下v8到底做了什么,以及它是如何提高性能的吗

如果给出一个例子,那就太好了

提前感谢。

直接从

V8在第一次执行时将JavaScript源代码直接编译为机器代码。没有中间字节码,没有解释器。属性访问由内联缓存代码处理,当V8执行时,内联缓存代码可能会与其他机器指令一起修补

…V8通过预测此[对象的]类也将用于在同一代码段中访问的所有未来对象来优化属性访问,并使用类中的信息修补内联缓存代码以使用隐藏类。如果V8预测正确,则在单个操作中分配(或获取)属性值。如果预测不正确,V8将修补代码以删除优化

例如,从点对象访问属性x的JavaScript代码是:

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,]