对于每个前端程序员来讲都有一个终极理想,那就是搞懂 javascript 引擎是如何工作的。
从我的网络 ID(justjavac)可以看出来,当我开始使用这个 ID 的时候并不是一个前端程序员,我主攻的语言是 java 和 C,当我开始决定阅读 JVM 源码时,他们告诉我说当时进步最大、性能提升最快的是 V8,于是就走上了前端的不归路。
我从去年底开始在知乎写 V8 专栏,记录一下自己学习 V8 源码的点点滴滴。
网上关注 V8 的文章也已经不少了,但是大部分文章都是比较旧的文章,而且很多文章也都已经过时了。
在 2012 年的 Google IO 大会上 Daniel Clifford 分享了 “Breaking the JavaScript Speed Limit with V8”,而就所有关于 Hidden Class 的文章不已例外的也都引用了这次分享。还有更早些时间 Vyacheslav Egorov 分享的 “Understanding V8”。
而国内被引用最多的文章(也可能是最早的)就是囧克斯翻译的 “Performance Tips for JavaScript in V8” 文章(中文:“JavaScript V8性能小贴士”),在内容上是对 Google IO 的一次总结和提取。
其次就是 2015 年三人成鸟博客中翻译的 “Optimization-killers” 文章(中文:[译] JavaScript 性能优化杀手)。但是英文文章已经更新了好几版了,在我写这篇文章时,因为是 2017 年 3 月更新的(一月前)。
上面的两篇文章中,有不少内容已经老就过时了。而在 2015 年 V8 团队就已经开始开发新的 JIT 引擎了 —— TurboFan。
归功于 TurboFan 新引擎,之前很多不能优化的语句已经慢慢变得可以优化,并且 V8 只有编译器而没有解释器的时代也结束了,V8 引入了解释器。我之前的文章中也犯过很多错误,比如 try-catch、for-of 不可能被优化等等。
国内关于 V8 的文章本来就不多,所以很多时候需要去阅读英文文章。但即使这样,也不是一件容易的事儿,因为 V8 的源码曾经从 google code 迁移到了 github,而且 V8 的文档也几经迁徙,所以很多文章中的超链接也都已经 404 了。
我也已经有大概五六年没有在实际开发中使用过 C++ 了,这次重新把 C++ 拾起来,试着读读 V8 的源码,因此开了专栏,记录一下自己学习 V8 的心得体会吧。
本来想开个知乎 Live 讲讲 V8 的,但是转念一想,Live 这种语音性质的直播不太适合讲这么深入的技术,于是选择了一个轻松点儿的话题:前端工程师的入门与进阶。
说来也巧,SegmentFault 社区也新开了直播板块,我也很荣幸的收到了邀请,而直播形式是视频直播,于是就去 SF 开了场 V8 的直播:前端程序员应该懂点 V8 知识。
本来打算讲 1 个小时,结果越讲越起劲,不知不觉就讲了 2 个小时,从晚上 8 点讲到了 10 点。
简直是买一赠一啊。为了感谢大家长期关注我的专栏,因此给大家一些折扣票,原价 9.99 的票在此专栏只卖 4.99 元。
点击查看原文可享受半价优惠。