新版V8引擎的一些介绍和了解

本文介绍了新版V8引擎在2017年谷歌I/O大会上展示的性能优化策略,包括TurboFan优化编译器、Ignition解释器、Orinoco垃圾回收器,以及对ES2015和WebAssembly的支持。V8引擎通过权衡初始化速度、内存占用和性能优化,适应不同场景需求,提供更高效、低内存占用的JavaScript执行环境。
摘要由CSDN通过智能技术生成

2017年的谷歌I/O大会召开。本文主要介绍在这次I/O大会上关于V8引擎最新的一些东西。

性能优化的多方权衡

在最开始,介绍一些关于浏览器引擎优化的基本路线,看看对浏览器引擎优化一般从哪几个方面着手。V8虽然在对javascript优化上取得很大的进步,将js的速度相比与最初提升了数十倍,采取了诸如隐藏类加PICs的技术加速属性读取,JIT技术等,但仍然存在一些问题。下面是主要几个

  • 一般来说,优化程度越好,产生机器代码的速度越快, 但会造成程序的初始化时间加长
  • 高度优化技术会造成很高的内存占用
    所以,在优化编译代码的时候需要在这几个方面进行权衡。下面这张图可以表示这中权衡过程。
    这里写图片描述

我们在上面提到过,优化程度的好坏影响着机器代码产生的快慢,优化越好,自然代码运行的速度会更快,但是会造成更长的初始化延迟,因为所有这些优化,发生在加载页面后面,浏览器首次遇到js代码的时候。所以第一个权衡就是程序启动时候的延迟和它启动后能达到的最高性能。而第二个权衡就是在JIT中,若要采取越多的优化,那么同时会占用更多的内存。所以,引擎在执行某个函数的时候需要考虑要更快的启动还是更快的运行,更低的内存还是更好的优化。

下面我们先来看看不同情况下的权衡需求。

foo(2)

现在这里有个页面,里面只包含一个foo函数,并且不知道它实际做什么。我们会发现js解释器本身的执行速度会比带有优化的js compiler速度快很多(虽然潜意识里你会认为解释器要慢的多)。因为当compiler遇到这个函数的时候,会把它转换成原生代码并且经过多次优化处理,而这一切会发生在运行之前。所以当你只需执行一次foo函数的时候,权衡策略应该这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值