热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AveV8JavaScript引擎:持续优化与创新

V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利ContinentalGT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。

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



推荐阅读
  • 本文探讨了Node.js后端开发的基础知识,包括模块源码的使用方法、前后端源码的区别以及如何在命令行环境中编译Node.js源代码。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • 深入理解Java多线程与并发机制
    本文探讨了Java多线程和并发机制的核心概念,包括多线程类的分类、执行器框架、并发容器及控制工具。通过详细解析这些组件,帮助开发者更好地理解和应用多线程技术。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • Java实现:从键盘输入系数求解一元二次方程
    本教程详细介绍了如何使用Java编程语言,通过键盘输入系数a、b、c来求解一元二次方程ax² + bx + c = 0的根。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • Kafka入门指南
    本文将详细介绍如何在CentOS 7上安装和配置Kafka,包括必要的环境准备、JDK和Zookeeper的配置步骤。 ... [详细]
  • 网络安全实验:Telnet与SSH服务对比及抓包分析
    本实验旨在对比Telnet和SSH两种安全通信协议的服务差异,并通过搭建服务器和使用Wireshark抓包工具进行详细分析。 ... [详细]
  • Spring Boot与Graylog集成实现微服务日志聚合与分析
    本文介绍了如何在Graylog中配置输入源,并详细说明了Spring Boot项目中集成Graylog的日志聚合和分析方法,包括logback.xml的多环境配置。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
author-avatar
手机用户2502934541
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有