【V8引擎】 V8引擎如何运行JS的

文章目录

    • 概要
    • 什么是V8引擎
    • 为什么需要V8引擎
    • 比较常见的javascript引起有哪些呢?
    • V8引擎是如何工作的(V8引擎的解析过程)
    • V8引擎的做了哪些优化

概要

本篇文章主要是讲V8引擎如何运行JS,对运行JS做了哪些优化

什么是V8引擎

V8 是一个由 Google 开发的开源 JavaScript引擎,目前用在 Chrome 浏览器和 Node.js中,其核心功能是执行和解析我们编写的JavaScript代码。

为什么需要V8引擎

高级的编程语言都是需要转成最终的机器指令来执行的。
我们编写的JavaScript无论交给浏览器或者Node执行,最后都是需要被CPU执行的。但是CPU只认识自己的指令集,机器语言才能被CPU所执行。所以我们需要JavaScript引擎帮助我们将JavaScript代码翻译成机器语言,才能被CPU指令来执行。

比较常见的javascript引起有哪些呢?

V8:Chrome 和 Opera 中的 JavaScript 引擎;

SpiderMonkey:Firefox(火狐) 中的 JavaScript 引擎;

Chakra:IE 中的 JavaScript 引擎;

ChakraCore:Microsoft Edge 中的 JavaScript 引擎;

SquirrelFish:Safari 中的 JavaScript 引擎。

V8引擎是如何工作的(V8引擎的解析过程)

大家都知道浏览器的渲染过程是,浏览器接受到资源后,开始解析HTML,在浏览器的内核里面有一个HTMLParser,把HTML转换成DOM
Tree(DOM树),在这个过程中,JavaScript也可以对DOM进行操作,CSS也会被CSS
Paser进行解析,转换成styleRules(css规则),然后DOM Tree和Style Rules会结合到一起生成Render
Tree(渲染树),然很会经过Layout进行适配对不同浏览器的屏幕大小进行适配布局,然后进会进行最终的绘制,生成我们最终看见的页面模样。

那么网页中的JS代码的解析过程是怎么样的呢?

这就是这篇文章的重点了,V8引擎的解析过程

在这里插入图片描述

1、JS由解析器解析后生成AST抽象语法树 2、解释器 Ignition 生成byteCode字节码 并直接执行 (清除AST
释放内存空间)
3. 解释器执行bytecode (此时的bytecode将被作为基准执行模型)
4. 得到25% - 50%的等效机器代码大小 (是以第三部生成的bytecode作为基准执行模型,字节码更简洁)
5. compiler 运行过程中,解释器收集优化信息发送给编译器TurboFan
6. 重新生成机器码
7. 有些热点函数变更会由优化后的机器码还原成字节码 也就是deoptimization 回退字节码操作执行

V8引擎的做了哪些优化

  • 函数值只声明未被调用,不会被解析生成ast 。
  • 函数只被调用一次,bytecode直接解释执行(就是说他会直接调用第三步的bytecode不会到TurboFan,因为TurboFan需要收集之前执行时的类型信息,那么就意味着TurboFan的优化对象函数至少执行大于一次)。
  • 函数被调用多次,可能会被标记为热点函数,可能会被编译成机器代码(就是说当函数被标记为热点函数后,Ignition就收集了很多类型信息,那么TurboFan就会优化这些信息将bytecode生成机器代码。后面再调用就会直接调用TurboFan生成的机器代码)。

由于一开始不需要直接编译成机器码,生成了中间层的字节码,从而节约了时间,优化编译阶段,不需要从源码重新解析,直接通过字节码进行优化,也可以deoptimization回退操作。

参考链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1452160.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解计算机系统 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…

Python 植物大战僵尸游戏【含Python源码 MX_012期】

简介: "植物大战僵尸"(Plants vs. Zombies)是一款由PopCap Games开发的流行塔防游戏,最初于2009年发布。游戏的概念是在僵尸入侵的情境下,玩家通过种植不同种类的植物来保护他们的房屋免受僵尸的侵袭。在游…

DTU在城市智慧供热上的应用:引领供热行业的智能化革新

随着城市化的快速推进和人们对舒适生活需求的日益增长,供热系统作为城市基础设施的重要组成部分,其智能化、高效化的发展已成为必然趋势。在这一进程中,DTU(Data Transfer Unit,数据传输单元)以其独特的优势…

计算机组成原理学习 Part 1

计算机系统 组成 计算机系统 { 硬件 计算机的实体,如主机、外设等 软件 由具有各类特殊功能的信息(程序)组成 计算机系统 \begin{cases} 硬件 &\text 计算机的实体,如主机、外设等\\ 软件 &\text 由具有各类特殊功能的信…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(二)

第三节 GB/T19001-2016 标准正文 本节为ISO9001:2015 标准条款的正文内容,各条款中的术语参照上节内容理解时,会很轻松。本节不再一一对各条款讲解。 引 言 0.1 总 则 采用质量管理体系是组织的一项战略决策,能够帮助其提高整体绩效…

FANUC机器人SRVO-454和SRVO-455故障报警处理总结

FANUC机器人SRVO-454和SRVO-455故障报警处理总结 公司内的一台FANUC机器人(型号:M-900iB;控制柜型号:R-30iB)正常运转过程中突然报警: SRVO-455 CPU看门狗(G:1 A:2),按Reset键无法消除该报警; 查看SRVO-455故障报警的具体内容,如下图所示: 由于现场没有备用的伺服放…

服务器如何有效解决源IP暴露问题

在现代互联网环境中,服务器的安全性至关重要。源IP暴露不仅增加了服务器遭受DDoS攻击、恶意扫描和数据泄露的风险,还可能影响业务的正常运行。本文将探讨如何利用技术手段,尤其是CDN和防火墙策略,来有效地解决服务器源IP暴露的问题…

[Java基本语法] 数组及其应用

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀线程与…

Linux环境下安装mysql5.7

1. 环境准备 Linux操作系统:CentOS Linux release 7.9.2009 (Core) mysql版本:mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar mysql5.7版本包资源: 链接:https://pan.baidu.com/s/15BqpcaGMU1XXuPd2T8oTQQ 提取码:2mgy 1…

Ollama+Open WebUI本地部署Llama3 8b(附踩坑细节)

先展示一下最终结果,如下图所示: 1. 添加环境变量 在下载 ollama 之前,先去配置环境变量,确保模型下载到我们想要的地方 win10 和 win11 输入path或者环境变量: 增加系统环境变量 变量名不可更改,必须是O…

增材制造引领模具创新之路

随着科技的快速发展和制造业的不断转型升级,增材制造(也称为3D打印)技术正逐渐展现出其在模具智造中的巨大潜力和优势。增材制造以其独特的加工方式和设计理念,为模具行业带来了革命性的变革,为传统制造业注入了新的活…

植物大战僵尸杂交版 v2.0.88 mac版 Plants vs. Zombies 杂交版下载

特别注意:该游戏最低系统要求为macOS Sonoma 14.X,低于此系统版本的请勿下载! 游戏介绍 植物大战僵尸杂交版是由B站UP主“潜艇伟伟迷”制作的一款结合了《植物大战僵尸》原有元素与创新玩法的游戏。这款游戏以其独特的“杂交”植物概念在B站…

java第二十三课 —— 继承

面向对象的三大特征 继承 继承可以解决代码复用,让我们的编程更加靠近人类思维,当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子…

镭速如何做到数据同步文件及文件夹的ACL属性?

数据文件同步时,除了要同步文件的内容,还要对文件的属性做同步。权限属性作为一个重要的文件属性,是属性同步的重中之重,控制着不同用户与用户组对文件和文件夹的访问权限。不同的操作系统有着自己不同的权限控制机制,…

PDF标准详解(三)—— PDF坐标系统和坐标变换

之前我们了解了PDF文档的基本结构,并且展示了一个简单的hello world。这个hello world 虽然只在页面中显示一个hello world 文字,但是包含的内容却是不少。这次我们仍然以它为切入点,来了解PDF的坐标系统以及坐标变换的相关知识 图形学中二维…

如果给电商系统颜值搞排名,我觉得淘宝千牛系统是天花板了。

淘宝的商家操作界面-千牛系统经过多年的迭代,无论从颜值上、功能上还是用户体验上都是行业天花板的存在,我截图软件上的一些图给大家分享下。

C++ //CCF-CSP计算机软件能力认证 202406-1 矩阵重塑(其一)

CCF-CSP计算机软件能力认证 202406-1 矩阵重塑(其一) 题目背景 矩阵(二维)的重塑(reshape)操作是指改变矩阵的行数和列数,同时保持矩阵中元素的总数不变。 题目描述 矩阵的重塑操作可以具体…

秋招突击——第三弹——Java的SSN框架快速入门——SpringMVC

文章目录 说明SpringMVC简介入门案例入门案例的工作流程配置环境的问题步骤总结注释学习开发模式Severlet容器类配置入门案例工作流程分析Bean加载控制 Postman工具请求 请求和响应请求映射路径请求参数普通参数设置过滤器,对输入进行处理 Json数据传递参数注释学习…

eclipse中报出Invaild project path

一、问题: 二、提示分析: 资源路径位置类型无效的项目路径:找到重复的路径条目 项目路径中有一个名为"/eclipse_rtt_demo"的条目被多次定义,这在Eclipse的构建路径设置中是不允许的。这个重复的条目既被标记为系统包含…

利用免费的可视化组件,零代码制作一个电商销量大屏居然这么简单!

每到一年一度的618和双十一时,由于各种平台的优惠力度,使人们纷纷清空购物车下单,而在这庞大的销售数据下,各大商家却能够在第一时间发布整体销售业绩和数额,在这高效且巨大的数据背后,你是否有了解过展示数…