美文网首页
编译器 和 解释器

编译器 和 解释器

作者: _1633_ | 来源:发表于2021-01-28 23:04 被阅读0次

    一段 JS 代码是如何被 V8 引擎执行的?

    程序中的一段源码在执行前都会经历三个步骤:分词/词法分析 、解析/语法分析、代码生成

    分词/词法分析:这个过程讲由字符串组成的字符串分解成代码块,这些代码块称为 词法单元(token),比如 var a = 1; 通常分解成 var、a、=、2、;。空格是否会被当做词法单元取绝于空格在这个语言中是否具有意义。

    解析/语法分析:这个过程是将词法单元流 转换成 一个由 元素逐级嵌套所组成的代表程序语法结果的树,这个树称为 抽象语法树(AST)。

    代码生成:将 AST 转换成为可 执行代码的过程 称为 代码生成。

    关于 AST 可以看我的另一篇文章 AST

    编译器 和 解释器

        机器不能读懂我们写的代码,所以需要通过 翻译将代码 翻译成机器语言,按照语言的执行流程,可以把语言划分为 编译型语言 和 解释型语言。

        编译型语言 在执行之前,需要经过编译器的编译过程,并且编译之后会直接保留机器能读懂的二进制文件,这样每次运行程序时,都可以直接运行该二进制文件,就不需要再次重新编译了,比如 GO、C/C++ 等都是编译型语言。

        解释型语言 在每次运行时都需要通过解释器对程序进行动态解释和执行,比如 Python、JS 等都是解释型语言。

编译器和解释器

    V8 是如何执行一段 JS 代码的

        1 生成抽象语法树(AST)和 执行上下文

        2 生成字节码

        3 执行代码

JS 性能优化

        1.提升单次脚本的执行速度,避免 JavaScript 的长任务霸占主线程,这样可以使得页⾯快速响应交互;

        2.避免大的内联脚本,因为在解析 HTML 的过程中,解析和编译也会占用主线程;

        3.减少 JavaScript 文件的容量,因为更小的文件会提升下载速度,并且占用更低的内存

相关文章

  • 浅析Python解释器的设计(二)

    从现代编译器的角度看,解释器和编译器的边界已经相当的模糊。我们后面的讨论说到的编译器就是Python的解释器,没有...

  • 编译器 和 解释器

    一段 JS 代码是如何被 V8 引擎执行的? 程序中的一段源码在执行前都会经历三个步骤:分词/词法分析 、...

  • 解释器和编译器

    我们知道,计算机只认识0和1(就是二进制),换句话说,不管我们在计算机上干了什么事情,运行了多么复杂的程序,从ps...

  • js设计原理

    js是解释型语言 语言分编译型和解释型语言 解释器和编译器

  • JVM(十六:编译器优化)

    解释器与编译器 解释器与编译器两者各有优势:当程序需要迅速启动和执行的时候,解释器可以首先发挥作用,省去编译的时间...

  • JavaScript代码是如何被执行的

    基本概念 编译器,解释器 抽象语法树 字节码和机器码 编译器和解释器 计算机不能直接理解高级语言,只能直接理解机器...

  • Python

    一、认识 Python 1.解释器是把其他语言解释成计算机语言 解释器分为解释器和编译器。解释器是解释性语言:源代...

  • JVM(4)解释器和即时编译器

    1、虚拟机运行模式 java是一种解释性编程语言,在Hotspot实现中,提供了解释器和即时编译器,即时编译器能将...

  • JavaScript代码是如何被执行的

    基本概念 编译器,解释器抽象语法树字节码和机器码 编译器和解释器 计算机不能直接理解高级语言,只能直接理解机器语言...

  • JVM虚拟机执行模式与编译优化过程

    解释器和编译器 HotSpot虚拟机中内置了两个即时编译器,分别为Client Compiler和Server C...

网友评论

      本文标题:编译器 和 解释器

      本文链接:https://www.haomeiwen.com/subject/ciocxktx.html