js引擎

以前没有自己写过js引擎任何的研究文章,最近一直在做前端性能优化的研究,今天在看各大js引擎优化细节相关的文档中看到了这些名词。

 

简单记录一下吧。

 

 

 

---------------V8

 

1.   下面的内容是查阅自维基百科

 

V8是一个由丹麦Google开发的开源JavaScript引擎,用于Google chrome。Lars Bak是组长,v8在执行之前将JavaScript编译成机器码,而非字节码或者是直译,以此提升性能。更进一步,使用了如内联等方法来提高性能。V8组译器是基于Strongtalk组译器。

 

2.   关于Lars Bak

 

--其实从1988年就开始参与虚拟机的开发,在1991年的时候参与了Self虚拟机的开发,到1997年Java HotSpot引擎技术的lead,同时也开发了高性能的Java ME虚拟机。所以其实在v8出来的时候,大哥已经在这个领域研究了20年。所以有的人说v8到现在还是最NB的引擎。

 

3.   V8的特性简单介绍:

--来自官方http://code.google.com/intl/zh-CN/apis/v8/design.html


主要包含3个:

 

  •  快速属性访问(Fast Property Access)
  •  动态机器码生成(Dynamic Machine Code Generation)
  •  高效的垃圾收集(Efficient Garbage Collection)
   这边我侧重说一下这个Efficient Garbage Collection

V8的所谓 垃圾收集(garbage collection)是回收那些进程不再需要的对象占用的内存。为了确保快速的对象分配和缩短垃圾收集造成的停顿以及杜绝内存碎片,V8采用的是一种stop-the-world,generational,accurate的垃圾收集器。
这意味着V8
  • 在执行垃圾收集周期内停止程序执行
  • 在大部分的垃圾收集周期中,只处理对象堆的一部分。这会减轻停止应用程序而受到的影响。
  • 总是准确地知道内存中对象和指针的位置。这样就避免了错误地把对象当做指针而因此造成的内存泄露。
在V8中,对象堆被分成两个部分:一个是新创建的对象分配的空间,另一个是垃圾收集周期遗留下来的就的对象。如果在垃圾收集周期内某一个对象被移动了,V8会更新所有指向这个对象的指针到新的地址

v8中对于对象的类型采用的hidden class机制,而且v8有两个机器码的编译器,一个只做最简单的优化,避免了编译而造成的开销,另一个是用来坐复杂优化的。

ps:目前v8衍生出来了最近老火的node.js。直接将js覆盖到了后端开发。


Gecko是套开放原始码的、以C++编写的网页排版引擎。目前为Mozilla家族网页浏览器以及Netscape 6以后版本浏览器所使用。这软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。   这套排版引擎提供了一个丰富的程序界面以供因特网相关的应用程序使用,例如网页浏览器、HTML编辑器、客户端/服务器等等。虽然最初的主要对象是 Mozilla的衍生产品,如Netscape和MozillaFirefox,现在已有很多其他软件现在利用这个排版引擎。Gecko是跨平台的,能在 Microsoft Windows、Linux和MacOS X等主要操作系统上运行。   Gecko为第2个最流行的排版引擎,仅次于Trident(用于Windows版的Internet Explorer)。

 

我们一般看到的使用Gecko的

Mozilla Firefox  Maxthon(本身并不支持,需要使用插件)




WebKit 是一个开源的浏览器引擎,WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。

 

WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。

 

WebKit 的优势在于高效稳定,兼容性好,且源码结构清晰,易于维护

 

WebKit 内核在手机上的应用也十分广泛,例如 Google 的手机 Gphone、 Apple 的 iPhone, Nokia’s Series 60 browser 等所使用的 Browser 内核引擎,都是基于 WebKit。

 

2008年9月2日,谷歌公司发布的第一个版本Google Chrome(中文名为谷歌浏览器)就采用了Webkit引擎。   

 

2009年,广受关注的Google手机的自带的浏览器也是Webkit内核,加载网页速度比IE手机浏览器快了近一倍。   

 

2010年1月24日,搜狗公司发布搜狗浏览器V2.0Beta,采用Webkit引擎,并支持与IE引擎互相切换。   

 

2010年1月24日,傲游3.0beta发布。2011年9月7日已发布3.1.7.1000。

 

 

 

 

 

下面转载一个链接, 出处:http://www.cnblogs.com/jyli/archive/2010/01/31/1660355.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值