Webkit的SquirrelFish Extreme
丁翊歌
2023-12-01
Wow...that's all I can say when I first saw this new version of Webkit's JavaScript engine. Yet another amazing piece of work indeed.
近来不停有强悍的JavaScript引擎传出消息来,Webkit的SquirrelFish Extreme(简称SFX)是最新的一则。在三个月前公布的SquirrelFish的基础上,他们又做了许多重要的改进,使引擎的执行速度有了又一次飞跃。
官方blog的消息:[url=http://webkit.org/blog/214/introducing-squirrelfish-extreme/]Introducing SquirrelFish Extreme[/url]
[url=http://trac.webkit.org/wiki/SquirrelFish]Webkit Wiki: SquirrelFish[/url]
改进点主要是以下4点:
1. Bytecode Optimizations
2. Polymorphic Inline Cache
3. Context Threaded JIT
4. Regular Expression JIT
多态内联缓存的部分在概念上与早先发布的V8有十分相似的地方,都是基于对象的结果在程序执行过程中实际上变化不会很大的假设来做优化,但具体的实现方法不同。
正则表达式的改进也值得注意。我还是没弄清楚到底原本的JavaScriptCore有没有用PCRE(更新:确认了JavaScriptCore有用PCRE的变种,叫做JSCRE),但Tamarin是用PCRE,而V8也是用相关的JSCRE的,这部分大家原本或许都差不多。
现在SFX也有JIT了,也就是说我关注的JavaScript引擎都已经完成了从纯解释器到JIT的转换,并且还在不断改进。微软在最近的会议上也表示JavaScript将会是强劲的竞争对手,那么他们到底会怎么应对呢,真期待。IE8的JScript引擎在这些新引擎面前看来是完败了……
说起来,新一代的脚本语言的引擎都远比以前的快,也是多亏了脚本语言的潮流啊。大家现在用的许多优化技术都是基于以前的LISP或Smalltalk的变种已经在使用的技术,会让人感叹:syntax still matters。