‘我们叫它忍者。它是如此之快’
Google Chrome开发者Evan Martin开源了他为开发编译该浏览器Linux版本而专门设计的编译系统。
Martin称这一系统名为忍者,因为它“速度飞快”。据Martin的忍者帮助手册,他之前使用了一个定制的基于旧GNU Make编译自动化系统;一旦该开源浏览器的程序文件有改动,它需要10秒钟开始编译它们,而忍者只花不到1秒钟。
当谷歌最初表示要开发非Windows环境下的谷歌浏览器时,Martin在他博客上表示,公司考虑过使用Scons 软件构造工具,但很快发现它太慢了。据Martin讲,Scons需要大概40秒钟才能开始编译。
Chrome只有一个可执行文件,包含大约30,000个源文件。
放弃使用Scons后,谷歌开始使用旧式Makefile来移植该浏览器。Martin很快又担忧起编译时间来。“编译效果让我越来越不安,”他说。“有一次我测了一下,一个文件被改动之后,我们的Windows build花了8分钟才连接完毕。这对我的生产效率和士气都是毁灭性的打击。”
系统走上快车道是到Martin想办法将增补编译时间缩短到10至20秒之后才开始的。但这还不够。“我还是为从运行’make’到编译第一步开始花那么长时间感到不满意。本来如果磁盘缓存够得话,我也不应该想的那么悲观的,”Martin说。
最终,Martin抱着尽可能加快编译速度的想法,从零开始设计出了自己的编译系统。“我以为我会做一个非常简单的编译系统的;我以为它只是概念上逼近Make,而几无任何特性,”他说。而一当它跑动起来,他便加入了几个Make中所没有的工具。它就成了今天的忍者。