fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
阅读:4930回复:18

Firefox 7 在禁止 Windows Prefetch 的情况下可以有效减少其启动时间

楼主#
更多 发布于:2011-09-21 23:26
各位还是否记得我们在以前的帖子里面有讨论 bugzilla 上关于一个 20 行代码的补丁可以有效加快 FF 启动速度。这个补丁原理是在开机启动时候预先载入 dll 的库(IE启动速度快我看是这样弄出来的)
https://bugzilla.mozilla.org/show_bug.cgi?id=627591

目前 Firefox 7 beta 版本已经基本实现这个功能了,但FF 稳定版还处于 6.0.2,普通用户要升级到 FF 7 需要等到 9 月 27 日左右。

这篇国外博文告诉我们其实 Windows Prefech(windows 预读取)会对预载入库减少启动时间产生阻碍。
http://blog.mozilla.com/tglek/2011/09/2 ... rt-faster/

从统计来看,只有25%以下的用户是关闭 Windows Perfetch的,而 Linux 和 Mac 平台用户则不受此影响,可以体验到更快的启动速度。

Windows Perfetch 对绝大多数常用软件启动速度有所帮助,但对 FF 7 却有不好的影响,我们无需完全关闭整个预读取功能,博文里面给出了如何实现 FF 7 加快启动速度的方法:
1、安装 Firefox 7 beta(或者到 prefetch 文件夹里删除 Firefox 的有关项目)
2、安装完毕后不要立即打开 Firefox,而是重启操作系统
3、这时候再启动 Firefox

这样可以取消 Windows Prefetch 来预读取 FF,而让FF能自己读取 dll 库从而加快启动速度。原因是:系统启动时 Windows Prefetch 会记录不相关的 IO 操作,使得 Firefox 无法在开机时预先加载所要读取的文件。
Explanation: on warm startup Windows Prefetch records irrelevant IO operations and blocks Firefox startup to preload files that Firefox accesses after startup.
Firefox More than meets your experience
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
1楼#
发布于:2011-09-21 23:26
https://bugzilla.mozilla.org/show_bug.c ... 27591#c158
这里有个vbscript可以阻止prefetch加速Firefox
Firefox More than meets your experience
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
2楼#
发布于:2011-09-21 23:26
bluec

不要着急,等时机成熟官方自然会在安装包里加入这个功能。为了加快firefox启动而关闭prefetch就是因噎废食了,那个blog里也没有这样推荐

事实上firefox在同配置的机器里,win7下比xp下启动速度要快
回到原帖


博客是没有推荐,博客里面只是阐述一下 Firefox 7 在启动速度方面已经有了很大提升,甚至已经集成预加载dll库,只是由于windows 的 prefetch(XP、Vista,Win7下面叫superprefetch)会导致这个功能无法使用,用户才没有感受到。如果能通过各种方法关闭 prefetch 就能够感受到了。
作者最后还希望 Mozilla 在以后版本中加入清理 prefetch 的功能,就像那个 vbscript 一样。
Firefox More than meets your experience
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
3楼#
发布于:2011-09-21 23:26
用 about:startup 比较了一下关闭prefetch和开启时候的启动速度,发现关闭prefetch后确实从速度上有所提升,只不过从现实感受上没有发现有太大差别。



上图最后一行,是关闭系统预读取后,Firefox 热启动时间。
上图倒数第二行,是关闭系统预读取后,Firefox 在系统重启后的冷启动时间。
上图倒数第三行,是开启系统预读取后,Firefox 在系统重启后的冷启动时间。
上图第一行,是开启系统预读取后,Firefox 热启动时间。

测试环境:Windows 7 32bit,Firefox 7 beta,安装 About:Startup 扩展
在注册表HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,找到EnablePrefetcher和EnableSuperfetch两个键,改成2,默认是3。3 表示预读取系统文件和应用程序,2 表示只预读取系统文件。
更改完毕后重启系统,运行Firefox 后发现 C:\Windows\Prefetch\ 下没有Firefox.exe -pf 这样的文件,说明 Firefox 没有被预读取。测试后,重新在注册表里面开启预读取程序。
Firefox More than meets your experience
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
4楼#
发布于:2011-09-21 23:26
havanna:20 行代码的补丁的原理不是在开机启动时候预先载入 dll 的库......

而是延迟载入几个体积较大的dll来达到启动加速的目的....

版主要多做功课....
回到原帖


难道是我英文阅读有误?
https://bugzilla.mozilla.org/show_bug.cgi?id=627591
We page in most of xul.dll and mozjs.dll. So i figured why not try lazy-linking libxul and preloading it. Turned out lazylinking didnt make any difference, but preloading seems to consistently shave up 2seconds of startup on my profile(40%).
I'm going to doublecheck on my favourite user's slow computer. Here is the patch in meantime.
Firefox More than meets your experience
游客

返回顶部