zoukankan      html  css  js  c++  java
  • v8引擎是如何执行一段js代码的?

    ①AST(Abstract Syntax Tree):抽象语法树,一种数据结构

    ②HotSpot:热点代码,多次出现的代码

    ③Bytecode:字节码

    ④Machine code:机器码

    ⑤Ingition:解释器,将AST转换为Bytecode

    ⑥TurBoFan:编译器,将Bytecode转换为Machine code

    ⑦JIT(ust-in-time compilation):即时编译,运行的时候编译执行

    1.AST的解释以及生成过程:

      1.1.AST是很重要的一种数据结构,Babel和Eslint的工作原理就是先将源代码转换为AST,然后再进行其他操作

      1.2.AST的生成过程:先分词,再解析:先将源代码拆分为一个个token(不可再分的字符或者字符串),然后将token解析为AST

    2.js引擎理解:

      2.1.是用来处理js代码的一段程序或者解释器,对原代码进行词法分析和语法分析后生成AST,基于AST再生成字节码,从而执行代码。

      2.2.执行过程:

        2.2.1.语法分析阶段:对加载完成的代码进行语法检验,检验完成后进入预编译阶段;

        2.2.2.预编译阶段:搜集函数名以及变量提升,确定this指向和作用域链

        2.2.3执行阶段:通过事件循环执行

    3.v8引擎:

      3.1.v8引擎是js引擎的一种,其特点是提高js执行性能

      3.2.v8执行代码过程:

        3.2.1.将源代码生成AST:源代码进行词法分析和语法分析后生成AST

        3.2.2.生成字节码:根据AST生成字节码,字节码通过Ingition转换为机器码才能执行

        3.2.3.执行代码:如果一段字节码是第一次执行,解释器会逐行执行;如果在执行字节码过程中发现有HotSpot,JIT即时编译器就会把HotSpot编译为机器码,并保存起来,下次就可以直接使用了,省去了将字节码转换为机器码的过程,提升了执行效率;

  • 相关阅读:
    引用jar版本错误
    一次皆大欢喜的程序员跳槽加薪
    Netty
    JAVA笔记-如何将百万级数据高效的导出到Excel表单
    100个高质量Java开发者博客
    Stackoverflow上人气最旺的10个Java问题
    偏执却管用的10条Java编程技巧
    如何生成每秒百万级别的 HTTP 请求?
    Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
    Redis介绍及常用命令
  • 原文地址:https://www.cnblogs.com/zxmonster/p/11874469.html
Copyright © 2011-2022 走看看