Nodejs学习记录: Chrome V8 基础

Nodejs的Javascript运行时引擎是Chrome V8。node

Nodejs 与 v8 引擎

V8引擎

  • V8引擎是一个JavaScript引擎实现,最初由一些语言方面专家设计,后被谷歌收购,随后谷歌对其进行了开源
  • V8使用C++开发,在运行JavaScript以前,相比其它的JavaScript的引擎转换成字节码或解释执行,V8将其编译成原生机器码(IA-32, x86-64, ARM, or MIPS CPUs),而且使用了如内联缓存(inline caching)等方法来提升性能
  • 有了这些功能,JavaScript程序在V8引擎下的运行速度媲美二进制程序。
  • V8支持众多操做系统,如windowslinuxandroid等,也支持其余硬件架构,如IA32,X64,ARM等,具备很好的可移植跨平台特性

VAQFII.png

历史

JavaScript引擎 V8 的前世此生linux

v8引擎出现的缘由

这里先说一下什么是编译型语言和解释性语言:android

编译型语言: 在程序执行以前必须进行专门的编译过程,有以下特色:windows

  • 只须编译一次就能够把源代码编译成机器语言,后面的执行无须从新编译,直接使用以前的编译结果就能够;所以其执行的效率比较高
  • 编译性语言表明:C、C++、Java、Pascal/Object Pascal(Delphi);
  • 程序执行效率比较高,但比较依赖编译器,所以跨平台性差一些;
  • 不一样平台对编译器影响较大。缓存

    • 16位系统下int是2个字节(16位),而32位系统下int占4个字节(32位);
    • 32位系统下long类型占4字节,而64位系统下long类型占8个字节;

解释性语言- 解释行语言,支持动态类型,弱类型,在程序运行的时候才进行编译,而编译前须要肯定变量的类型,效率比较低,对不一样系统平台有较大的兼容性.架构

  • 源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行性能

    • 源代码—>中间代码—>机器语言
  • 程序不须要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次
  • 解释性语言表明:PythonJavaScript、Shell、Ruby、MATLAB等;
  • 运行效率通常相对比较依赖解释器,跨平台性好;

比较优化

  • 通常,编译性语言的运行效率比解释性语言更高;可是不能一律而论,部分解释性语言的解释器经过在运行时动态优化代码,甚至能使解释性语言的性能超过编译性语言;
  • 编译性语言的跨平台特性比解释性语言差一些;

进过以上说明,解释性语言,运行效率低,随着Web相关技术的发展,JavaScript所要承担的工做也愈来愈多,早就超越了“表单验证”的范畴,这就更须要快速的解析和执行JavaScript脚本。V8引擎就是为解决这一问题而生,在node中也是采用该引擎来解析JavaScript。spa

基本概念

内存机制

Nodejs 实际上就是一个使用C++完成的程序,其能执行JavaScript代码,它的底层主要由两部分第三方库组成 —— Chrome V8 和 libuv操作系统

参考

Documentation V8

相关文章
相关标签/搜索