2009年5月15日星期五

再说说 Firefox 为什么启动慢(转寄)

发信人: Quaful (夸父|嗯), 信区: NewSoftware
标 题: 再说说 Firefox 为什么启动慢
发信站: 水木社区 (Fri May 15 15:13:31 2009), 站内

比如说你写一个程序,就是输出一个 hello world,如果你就写一行:
printf("Hello, world!\n");
这样肯定是比较快的。可是有一天有一位"牛人"告诉你了,"这太老土了!现在是互联网时代了!我们要用互联网的标准来写!"于是你的程序就成了:

// 加载一个 XML 文件,里面写着:<output>Hello, world!</output>
...(此处略去1000行代码)
// 解析这个 XML 文件
...(此处略去10000行代码)
// 渲染这个 XML 文件
... (此处略去100000行代码)

好了,现在同样是输出一个 hello world,你的程序已经膨胀了几万倍了。原来你的一个小程序,编译出来可能还不到4KB,现在已经变成4MB了,可能还有一堆依赖的 DLL,这些 DLL,加起来可能都有40MB。加载这些 DLL 要多长时间?

Firefox 就是这样,它的所谓界面都是用一个叫 XUL 的 XML 来描述的,所以哪怕是显示一个小窗口,它也得像前面那个例子一样折腾一下,这速度肯定就下来了。有人说 Firefox 慢是因为扩展多,这个说法不准确,可以这么说,Firefox 自己其实就是一堆的组件拼起来的,哪怕一个全新安装的 Firefox,你猜猜它的组件有多少个?数数 components 目录就知道了。

而且,Mozilla的"牛人"们已经认准了,"未来的软件"就应该是这样,这样才能"通用""易扩展",所以恐怕 Firefox 是不想再回到土土的但是速度快的 printf 时代了。

Chrome 会不会走到这条路上呢?看样子会。等到 Chrome 支持扩展到 Firefox 的水平的那一天,就是 Chrome 沦落到这条路上的那一天。不过,有个好消息是,Chrome 是基于 WebKit 引擎开发的,这个引擎不像 Firefox 的 Gecko 引擎那么臃肿,就好像前面那个例子,渲染一个 XML 文件,Gecko 可能要 10 万行代码,WebKit 可能只要 5 万行代码。所以,虽然都慢,但是还是可以期待 Chrome 快那么一点点地,估计,如果 Firefox 启动要 10秒,Chrome 只要 9 秒吧。

--

※ 修改:・Quaful 于 May 15 15:15:36 2009 修改本文・[FROM: 202.165.107.*]
※ 来源:・水木社区 newsmth.net・[FROM: 202.165.107.*]

没有评论:

发表评论