V8 是一个全新的Google 的开源 JavaScript 引擎,它在设计之初就以高效地执行大型的 JavaScript 应用程序为目的。在一些性能测试中,V8 比 Internet Explorer 的 JScript 、Firefox (IE 9使用JS引擎为:Chakra引擎)中的 SpiderMonkey (火狐4.0后用的JS引擎为JaegerMonkey)以及 Safari 中的 JavaScriptCore 要快上数倍。
V8 采用 C++ 编写,可在谷歌浏览器(来自 Google 的开源浏览器)中使用。
V8 根据 ECMA-262 第三版中的说明使用 ECMAScript,并在使用 IA-32 或 ARM 处理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系统中运行。
V8 可以独立运行,也可以嵌入任何 C++ 应用程序中。
V8性能的3个关键方面:
- 快速属性访问
- 动态生成机器码
- 高效的垃圾回收
快速属性访问
JavaScript 是一门动态语言,属性可以在运行时添加到或从对象中删除。这意味着对象的属性经常会发生变化。大部分 JavaScript 引擎都使用一个类似于字典的数据结构来存储对象的属性,这样每次访问对象的属性都需要进行一次动态的字典查找来获取属性在内存中的位置。这种实现方式让 JavaScript 中属性的访问比诸如 Java 和 Smalltalk 这样的语言中的成员变量的访问慢了许多。成员变量在内存中的位置离对象的地址的距离是固定的,这个偏移量由编译器在编译的时候根据对象的类的定义决定下来。因此对成员变量的访问只是一个简单的内存读取或写入的操作,通常只需要一条指令即可。
为了减少 JavaScript 中访问属性所花的时间,V8 采用了和动态查找完全不同的技术来实现属性的访问:动态地为对象创建隐藏类。这并不是什么新的想法,基于原型的编程语言 Self 就用 map 来实现了类似的功能。在 V8 里,当一个新的属性被添加到对象中时,对象所对应的隐藏类会随之改变。
动态机器码生成
V8 在第一次执行 JavaScript 代码的时候会将其直接编译为本地机器码,而不是使用中间字节码的形式,因此也没有解释器的存在。属性访问由内联缓存代码来完成,这些代码通常会在运行时由 V8 修改为合适的机器指令。
高效的垃圾收集
V8 会自动回收不再被对象使用的内存,这个过程通常被称为“垃圾收集(Garbage Collection)”。为了保证快速的对象分配和缩短由垃圾收集造成的停顿,并杜绝内存碎片,V8 使用了一个 stop-the-world, generational, accurate 的垃圾收集器,换句话说,V8 的垃圾收集器:
- 在执行垃圾回收的时候会中断程序的执行。
- 大部分情况下,每个垃圾收集周期只处理整个对象堆的一部分,这让程序中断造成的影响得以减轻。
- 总是知道内存中所有的对象和指针所在的位置,这避免了非 accurate 的垃圾收集器中普遍存在的由于错误地把对象当作指针而造成的内存溢出的情况。
本文部分内容摘自Free Mind博客,更多关于V8引擎介绍,可以访问 http://blog.pluskid.org/?p=186
相关推荐
**Google V8 引擎与 Chrome JavaScript 引擎** Google V8 引擎是一款高性能的开源 JavaScript 运行时环境,由谷歌开发并应用于其浏览器Chrome中,为JavaScript代码提供了快速且高效的执行平台。V8 不仅是 Chrome 的...
Chrome V8 JavaScript引擎是Google开发的一款高性能的JavaScript和WebAssembly执行环境,被广泛应用于Chrome浏览器以及Node.js等服务器端环境。V8引擎以其快速的编译速度和高效的运行时性能而闻名,它将JavaScript...
**Google V8 JavaScript引擎**是Google为Chrome浏览器开发的一款高性能的JavaScript引擎,它以其快速的解释和编译能力而闻名。V8引擎的设计目标是使Web应用具备与本地应用程序相似的响应速度,通过将JavaScript代码...
V8 JavaScript引擎是一款由Google开发的高性能JavaScript和WebAssembly虚拟机,主要用于Chrome浏览器以及Node.js环境中,它以C++编写,能够快速解析和执行JavaScript代码。PHP V8扩展则是将V8引擎集成到PHP中,使得...
V8 JavaScript脚本引擎是Google Chrome浏览器的核心组成部分,它负责高效地执行JavaScript代码。V8以其卓越的性能和对Web应用程序的支持而闻名,其源码分析对于深入理解JavaScript的运行机制以及高性能编程技术至关...
JavaScript V8执行引擎是Google Chrome浏览器的核心组成部分,也是全球公认的高性能JavaScript引擎之一。V8引擎的设计目标是将JavaScript代码直接编译为机器码,从而实现快速执行。它不仅被用在Chrome浏览器上,还被...
V8 JavaScript引擎是Google开发的一款高性能的开源JavaScript运行环境,被广泛应用于Chrome浏览器以及Node.js等项目中。本文将深入探讨如何使用Visual Studio 2010(VS2010)来编译V8引擎,并将其嵌入到C++项目中。...
Chrome浏览器的V8引擎是Google开发的一款高性能的JavaScript和WebAssembly虚拟机,它负责解析、编译和执行JavaScript代码。V8引擎以其高效、快速和轻量级的特点,在Web开发领域占据着重要的地位。这份“Chrome浏览器...
V8引擎则是Google开发的一个开源JavaScript运行时环境,广泛应用于Chrome浏览器和Node.js服务器端JavaScript执行。"delphi调用v8引擎.zip"这个压缩包文件很可能是提供了一个示例或教程,展示了如何在Delphi项目中...
V8是Google开发的一个开源、高性能的JavaScript和WebAssembly虚拟机,它被广泛应用于Chrome浏览器以及Node.js服务器端环境中。在Delphi中集成V8,开发者可以将JavaScript代码引入到原生的Windows应用程序中,从而...
Google V8则是一款开源的JavaScript引擎,被广泛应用于Chrome浏览器和Node.js环境中,以提供高性能的JavaScript执行能力。本篇文章将深入探讨如何在Delphi项目中调用Google V8引擎,实现高效率执行JavaScript代码。 ...
V8是Google为Chrome浏览器开发的一款高性能JavaScript引擎,它以C++编写,能够快速执行JavaScript代码。将V8集成到Android中,开发者可以利用JavaScript的灵活性和丰富的库资源来增强原生应用的功能。 要成功在...
V8是由Google开发的高性能JavaScript和WebAssembly虚拟机,用于Chrome和Node.js等项目。它实现了ECMAScript规范,提供了快速的代码解析、编译和执行。V8Py就是Python与V8引擎之间的桥梁。 **V8Py的安装** 要使用V8...
V8引擎是谷歌为Chrome浏览器开发的高性能JavaScript引擎,其主要特点是采用即时编译(Just-In-Time,JIT)技术,将JavaScript代码编译成机器码,从而提高了执行速度。V8引擎对ECMAScript规范有着良好的支持,并且...
Chrome V8引擎中的JavaScript数组实现分析与性能优化 在本文中,我们将对Chrome V8引擎中的JavaScript数组实现进行深入分析,并探讨如何通过优化JavaScript数组的使用方式来提高程序效率。在实际应用中,JavaScript...
### V8 JavaScript引擎内部构造详解 #### 背景与目的 V8 是由 Google 开发的一款开源的、高性能的 JavaScript 引擎。它最初应用于 Google Chrome 浏览器,并逐渐成为众多现代浏览器和 Node.js 的核心组成部分。V8 ...
V8引擎是Google开发的一款高性能的JavaScript和WebAssembly运行时环境,它被广泛应用于Chrome浏览器以及Node.js等服务器端JavaScript平台。V8引擎以其高效、快速的解释和编译JavaScript代码而闻名,它实现了...
Chrome V8 JavaScript 引擎是谷歌开发的一款高性能的JavaScript引擎,它被广泛应用于Google Chrome浏览器以及其他基于Chromium的浏览器中。在2011年12月01日发布的版本3.7.12,V8引擎展示了其在速度、内存管理和对...
c# 、asp.net 在后台使用谷歌V8引擎执行js,将示例工程中的GoogleV8Engine.cs文件复制到你的项目中。将GoogleV8Engine_x64.dll 和 GoogleV8Engine_x86.dll 两个非托管DLL文件拷贝到工程部署的DLL目录下(ASP.Net拷贝...
JavaScript引擎V8是Google开发的一款高性能的JavaScript引擎,它被广泛应用于Chrome浏览器和Node.js环境中。V8引擎能够快速地解析和执行JavaScript代码,通过即时编译(JIT)技术将JavaScript源代码转换为机器码,...