Ave V8 JavaScript引擎:不断改进

V8不仅是道奇Charger,Bentley Continental GT或Boss Hoss摩托车中的著名八缸发动机。 在2008年,Chromium项目的开发人员发布了一个新的JavaScript和WebAssembly引擎 ,名称相同,即V8,这是对工程奇迹的参考。 因此,又诞生了一个Vee-8引擎。

“ JavaScript有趣的特性之一,以及今天使用V8的原因是它与平台无关”, -Lars Bak,丹麦程序员,V8项目的技术负责人

什么是JAVASCRIPT引擎?

简而言之,JS引擎是将JavaScript代码转换为低级代码或机器代码的程序。 它们遵循ECMAScript标准,该标准定义了功能和执行过程。

与V8一样,它是一件了不起的机器,而V8 JS引擎本身就是一个利基。 您很可能已经面对面“满足”了Vee-8。 作为Chrome的一部分,当您访问网页时,此引擎将运行JavaScript。 换句话说,V8为JS提供了运行时环境。 浏览器已经提供了Web平台的API(应用程序编程接口)。 除浏览器外,V8嵌入在诸如Node.js,MongoDB和Couchbase之类的服务器端技术中。
V8用C ++编写,可以独立运行,也可以嵌入到C ++应用程序中。 它是便携式的,可以在以下环境上运行:

  • Windows 7或更高版本
  • macOS 10.12以上
  • 使用x64,IA-32,MIPS和ARM处理器的Linux系统

除V8之外,著名的JavaScript引擎包括:

  • SpiderMonkey-Firefox
  • JavaScriptCore(Nitro)-Safari
  • Chakra JS-Microsoft Edge
“无论是在浏览器,Node.js还是在IoT设备中运行它,都没有关系:从您编写的内容开始执行-那就是引擎正在做的事情。JS引擎是我们所做的一切的核心”,-Google的高级工程师Franziska Hinkelmann

前言:让我们开始引擎吧!

JavaScript是当今网络上最流行的脚本语言,所有主要的浏览器都支持JS模块。 V8独立于其托管的浏览器是一项了不起的成就。 这怎么发生的?

Chromium项目(适用于Google Chrome浏览器)和更多Chromium浏览器诞生了此开源JS引擎。 丹麦程序员Lars Bak是项目的创建者,他是V8团队的负责人。 这个人是真正的虚拟机专家和面向对象设计的专家。 顺便说一句,Lars Bak花了30年时间来开发编程语言。 曾几何时,他为BETA实现了运行时系统。 从那时起,巴克先生就在各种软件系统的戏剧性清单上留下了痕迹,并最终加入了V8。 它怎么样?

2006年秋天。Google聘请Lars Bak来构建针对Chrome浏览器的新JavaScript引擎。 该团队致力于建立全球最快的JS运行时。 对于这种动态的,松散类型的语言,这确实是一项壮举。 新的JS运行时被命名为“ V8”,这是对著名的强大肌肉汽车引擎的一种暗示。

帽子里发生了什么

有趣的是,V8的子过程是根据汽车详细信息来命名的。 那不仅是一个时尚的品牌理念。 这也是用户了解JS引擎行为的好方法。

“我喜欢他们如何将V8引擎的处理名称更改为“点火”和“涡扇”之类的东西。由于现在就像汽车引擎,因此更容易记住”,-YouTube用户Ksee

V8解析的JavaScript究竟发生了什么?

从根本上讲,JS引擎:

  1. 加油(源代码)
  2. 解析器从源代码生成抽象语法树
  3. V8的解释器正在从语法树生成字节码,编译器可以理解
  4. V8的编译器正在根据字节码生成图形(用优化的机器代码替换字节码部分)
  5. 而且,达达–执行!

什么使代码运行如此之快? 让我们考虑一些有趣的V8特性。

解释还是编译?

JS通常被认为是一种解释型语言,但是它的现代引擎不只是解释器,它还可以使执行更高效。 允许高速JS执行的V8的基础是JIT(即时)编译器在运行时(而不是提前)优化代码。 它结合了解释器和编译器的最佳功能,混合了这些步骤并加快了翻译和执行速度。

V8的第一个优化编译器是“ FullCodegen”。 最新的和更先进的是“ Turbofan”。 V8的基于寄存器的底层解释器“ Ignition”使用其后端。 Ignition + TurboFan组合管道于2017年启动。

在2018 年发布了Liftoff,这是 WebAssembly(Wasm)在V8中的第一层编译器,用于快速启动具有Wasm模块的复杂网站,例如Google Earth

保持镇静并保持清洁

在过去的几年中,V8的开发人员在垃圾收集过程改进方面进行了大量工作。 最后,他们实现了一个基于第二代的垃圾收集器(也称为完整GC), 称为“ Orinoco” 。 它应用了最新的有效技术来释放线程。 收集器查找不再引用的对象和数据并收集它们。 这有助于大大改善延迟和页面加载,更流畅的动画,滚动以及用户交互。

延迟关闭

此外,还有一个有效的内存管理系统可供V8使用。 它允许在运行JavaScript的同时进行快速分配和最少的处理,这意味着在浏览器中使用JS不会造成延迟和打ic。

在2018年,Chromium团队启动了一个名为V8 Lite的项目。 主要目的是强制减少内存使用量。

最初,它旨在作为低内存设备或嵌入式用例的精简模式 。 但是不久,开发人员决定在常规V8中完全实现该优化奖励,从而推进了所有第8版使用领域。 您可以在V8的官方博客中咨询有关节省内存和提高执行速度的技术细节,而无需进行向导。

引擎开发的主要目标是使JavaScript尽可能快地运行。 开发人员强调,一项关键任务是改进分布式系统,在该系统中可以关闭单个单元,其余单元接管该功能。 这使系统更加强大。 可以将其与云系统体系结构进行比较,在云体系结构中,一个系统可以容忍单个设备崩溃,而整个系统则运行平稳。

“我们的理念是,如果您在从编程到从运行系统接收反馈的快速反馈循环中,在一秒钟之内,就会激发程序员进行实验和发明新事物”,-
丹麦程序员Lars Bak,V8项目的技术负责人

VROOM VROOM:继续前进!

著名的彼得·德鲁克(Peter Drucker)的名言“绝大多数成功的创新利用了变化”在JavaScript领域尤为重要。 在发布过程中,Chromium的团队每6周创建一个新的V8引擎分支。 最新的V8的v.8.0(是!)已于12月18日发布。

这里列出了一些面向开发人员的好东西:

  • 指针压缩可减少40%的内存使用
  • 空合并
  • 更快的高阶内置函数
  • 可选链接

所有道路都通向铬

所有这些v.8.0亮点在预期新的Chrome版本中特别令人愉悦。 据Chromium报道, Chrome 80 Stable将于2020年2月4日发布。 因此,让我们检查错误修复和性能改进,并在2020年使用V8 JS进行开发

本文 最初发布在Freschode博客上 ,您可以在其中找到有关Web开发的更多文章。

From: https://hackernoon.com/vjavascript-engine-t-non-stop-improvementf-ih4r324s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值