• 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编译为机器码,并保存起来,下次就可以直接使用了,省去了将字节码转换为机器码的过程,提升了执行效率;

  • 相关阅读:
    晒一下我的统一网站管理平台
    走向DBA[MSSQL篇] 从SQL语句的角度 提高数据库的访问性能
    XSS跨站脚本实例
    关于开源的一点看法
    晒一下我的监控系统
    走向DBA[MSSQL篇] 详解游标
    【linux+C】新征程 linux下C编程
    走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
    晒一下我的web过滤器
    分享新出炉的微软派工具 你,值得拥有
  • 原文地址:https://www.cnblogs.com/zxmonster/p/11874469.html
Copyright © 2020-2023  润新知