对Firefox启动速度的分析

  论坛上很多朋友都曾经诟病过Firefox的启动速度,得到的解决办法,比较切实有效的也就只有prefetch这一种办法,不管是使用单独的软件如:Firefox Preloader,还是使用Windows自带的功能。我也没有解决这个问题的办法,但是我想要分析一下Firefox的启动速度为什么会慢。
  看了一些相关资料,在我的理解,Firefox的体系是这样的,首先建立一个运行环境,可以执行XUL和JavaScript代码,然后用XUL构建程序的界面,用JavaScript构建程序的功能。所谓的插件是对运行环境的完善,而扩展则同Firefox一样是运行在上述的运行环境之上的。
  这样构建Firefox的好处就在于可以实现很大程度上的跨平台,在这个体系中,只有涉及到运行环境的才与平台有关,别的部分则是跨平台的。其实这种方式和Java语言的工作方式很相似。那个运行环境也就相当于Java中的虚拟机,只不过这个虚拟机是可以通过插件扩展的。
  而这种工作方式也不可避免的带来了启动方面的问题。大家都知道运行速度最快的是二进制代码,而Firefox只有底层的运行环境采用了二进制代码,上层的XUL和JavaScript都是解释执行的,效率比二进制代码自然慢了很多。而Firefox本身有很大的一部分正是这种解释执行的代码。相对于IE和Opera的全面二进制化,启动速度自然要受影响。这是Firefox启动慢的一个原因。
  打开Firefox、IE和Opera的安装目录,有什么感觉?我想大家肯定会发现,Firefox的安装目录相对来说十分复杂,充斥着各种各样的文件,这就是Firefox启动慢的第二个原因。
  大家都知道,打开很多小文件的速度要远远大于打开一个大文件。这是因为打开小文件时,寻址定位所花费的时间要远远超过读取所需的时间。而Firefox的组成很大程度上都是些小文件,这非常影响加载速度。
  也许是Mozilla也意识到了文件过多造成的效率损失,也许是为了组织起来更方便,Firefox的文件有很大部分是打包的,采用了Zip的压缩格式。这样可以减少文件数量(相对而言),提高载入速度。但是这同样是一把双刃剑。Zip既然是压缩格式,那在使用的过程中就要解压缩,这必然会提高CPU的占用率,同时延长Firefox的启动时间。
  同时,解压缩之后的文件需要写入磁盘,这进一步加剧了延长了启动时间。当然解压缩Zip文件的问题可能会由于临时文件夹的存在而有所缓解,但是这样依然会回到文件过多影响启动速度的范畴。总的来说,这两个因素的共同作用就是Firefox启动缓慢的第二个原因。
  写过Firefx扩展的朋友应该知道Firefox的扩展中的文件的具体位置是不需要明确指出的,只要给一个大致的位置即可,Firefox会帮我们找到。这无疑是一个方便开发的举措,但是从时间上,这涉及到一个搜索的过程,肯定会影响加载的速度。这是我发现的认为影响Firefox启动速度的第三个原因。
  从上面这三个原因可以看出,Firefox启动慢是体系造成的,不改变这个体系,很难有根本的好转。
  其实提高Firefox启动速度的办法就是最大程度地减少文件数量,进行二进制化。最好的方式自然是把Firefox编译成一个可执行文件,推出针对各个操作系统的版本。同时扩展也应当改变代码包的发行方式,推出针对各个操作系统的二进制版本,甚至于Firefox集成扩展的功能。这样Firefox就和IE、Opera在体系上没有什么太大的差别了,而后果就是牺牲了跨平台性、提高了开发和使用难度。这无疑与Firefox的理念是不相符。
  在尽量不改变体系的情况下,个人认为可以在Firefox的运行环境中增加一个编译器,把XUL、JavaScript这类的代码编译成二进制代码或类似Java中的字节码。当然编译成的文件能少一些更好。这样只有在第一次使用的时候,需要进行编译,在之后的使用过程中Firefox的启动、运行速度、乃至CPU占用率都会有很大的改善。

标签:

Posted by web123lai at 12/18/2006 10:09:00 下午

7 Comments

  1. Blogger opentiss posted at 12/22/2006 10:39:00 下午  
    对启动速度并不太关注,速度应该没有那么重要吧。
  2. Blogger web123lai posted at 12/22/2006 11:29:00 下午  
    其实我也不关心,只是看到那么多次的抱怨,一时兴起分析了一下
  3. Blogger niverse posted at 9/15/2008 07:55:00 下午  
    是这样子的啊!本人为启动速度十分不满呢。
  4. Anonymous 匿名 posted at 9/25/2008 10:29:00 上午  
    嗯,启动速度确实不快,跟tw,opera不是一个量级,而且似乎越来越慢,3.0比0.几版本时没有进步。不过启动后就好了,缺点也就这一点吧,其他功能用起来很爽。
  5. Anonymous 匿名 posted at 10/01/2008 12:47:00 上午  
    我一般是开了之后就不关了
  6. Blogger web123lai posted at 10/01/2008 07:38:00 上午  
    启动之后再次启动速度还是很快的,呵呵,热启动^_^
  7. Blogger Ivan Wong posted at 4/17/2009 11:58:00 下午  
    FF的啟動速度有種隨使用時間越長越慢的感覺.剛安裝FF時啟動速度還可以,可是用了幾個月後就慢了.懷疑過是history,cache的影響,可是clean了這些東西後啟動速度沒有太大改善.在windows下FF速度比chrome確實差多了甚至連IE6,IE7都比不過.

发表评论

« Home