论文部分内容阅读
提高系统速度,让程序运行如飞,是每个CFan的梦想。于是,各种加速系统启动、提高程序运行速度的技巧总是最受欢迎的。在网上就经常流行着一个有关Prefetch(即“预读取”)的技巧,说是只要删除Windows目录中的Prefetch文件夹,并在注册表中修改相关的键值,就能提高系统速度。真的是这样吗?
Prefetch是垃圾还是钻石?
1.网球比赛中如何节省球员体力
在网球场上,如果球被打飞之后都让球员自己去捡,显然非常浪费时间,不如在场外网球有可能飞到的地方预先安排一些球童,只要有球飞到那里就由球童去捡球,从而节省了球员的体力,这些球童的作用就有点像“预读取机制”。
2.用预读取给程序节省“体力”
首先让我们了解一下什么是Prefetch。在Windows XP及其以后的操作系统中都有“预读取”功能,这个概念有点像我们常说的“缓存”,这里根据微软官方的说法把它称为“预读取机制”。举例来说,当我们在电脑中启动一个DVD播放软件,那么这个程序通常都需要一些DLL(动态链接库)文件进行辅助工作,比如调用一个DLL文件来给视频文件解码。既然每次播放电影的时候都需要DLL文件来解码,那么如果能在启动播放程序的时候就预先将这些DLL读到内存中,播放电影的时候就不必再调用,也就不用访问硬盘了,那不是会大大提高效率吗?没错,“预读取机制”的任务就是这样的:它会监视应用程序在运行时需要调用哪些硬盘文件,下次应用程序启动时,系统就会“聪明”地预先将它们从硬盘中读入内存,从而提高运行效率。
Windows XP的“加速舱”
这种“预读取机制”已经被引入到Windows XP中,并在很大程度上提高了系统速度。Windows XP的预读取文件保存在Windows\Prefetch目录中(见图2),以PF为扩展名,这些文件包括了载入文件的详细信息和载入顺序。每个应用程序都会在Prefetch目录中留下相应的预读取文件,预读取文件描述了应用程序或系统启动时各个模块的装载顺序,其命名方式是以应用程序的可执行文件名为基础,加上一个“-”和描述执行文件完整路径的十六进制值,再加上文件扩展名PF,例如DEFRAG.EXE-273F131E.pf。
当下一次启动系统时,Windows会参考相应的PF文件,将其中记录的所有文件载入内存,而不是像以往一项一项依指令逐个载入文件。假如预读取目录中没有文件,系统会重新监视、创建文件、并保存下来。很明显,定期删除Windows\Prefetch目录中的文件是一件不明智的事情,因为创建文件反而会增加系统负担,降低系统性能。
软件也有助推器?
经常使用各类软件的人,会发现Prefetch这个词并不仅仅存在于Windows目录中。很多朋友都注意到了:在Windows XP中,Windows Media Player(以下简称WMP)的快捷方式的属性菜单中,它的命令并不只是一个简单的“wmplayer.exe”命令,这后面还跟着一个“/prefetch:1”参数(见图3)。对,又是Prefetch!
谣传一:垃圾的Prefetch
这种观点认为:这完全是一个针对WMP的专用参数,对于其他软件来说,只是一个
垃圾参数,对性能没有任何影响。
谣传二:万能的prefetch
看到了Windows Media Player的这个参数,善于联想的人们立刻开始发挥想象力——在很多网站和报刊中都会看到这样一种说法:这个参数将启用软件的预读取技术,可以极大地提高软件的运行速度,推荐大家在任何可执行文件(EXE文件)的快捷方式中加入它!
辟谣:以上两种观点都是错误的
WMP是一个可以完成多种任务的应用程序,比如播放电影、播放音乐、刻录光盘、收听流媒体广播。使用不同的功能时所需的DLL文件和解码器也是不同的。另外双击打开WMV文件和“插入光盘”这两种不同的启动方式,对于DLL的要求也会有不同的要求。如果在各种情况下都使用一样的预读取参数,那无异于囫囵吞枣。使用不匹配的预读取文件的结果是软件浪费了大量时间将不正确的文件读入内存,既降低了效率又白白占用了内存。正是由于这个原因,WMP才为不同环境设计了不同的预读取文件(并且以数字编号),于是就出现了“/prefetch:1”、“/prefetch:2”、“/prefetch:3”……这样的区别。
TIPS
小提示
并不是只有Windows Media Player 才能设置不同的预读文件,所有软件都一样可以这样设置。
谣言还在继续
关于软件的prefetch,还有很多人没有注意到,而且它在命令行方式下运行会引起一些冲突和故障。一些不明情况的人还在不停地向快捷方式中添加“prefetch”参数(比如Kazaa),却不知道正是这个“技巧”导致了软件的瘫痪。微软当然知道这一点,但是它一直保持沉默(沉默是金-_-)……
据我猜测,“添加prefetch能加速软件运行速度”的谣言还会继续,而在此时,发明它的这家世界最大的软件公司对于“prefetch”的秘密一直缄口不言,也许是“有所考虑”吧!
TIPS
小知识
程序运行时需要哪些DLL
程序在运行中调用DLL有两种方式:前期绑定和后期绑定。前者是在程序开始运行时就将所需的DLL全载入内存中,而后者则是在需要DLL中的功能时才向系统申请将其载入内存。对于前者可以使用Dependency Walker(下载地址:http://www.newhua.com/cfan/200517/depends.zip)查看,下载解压后直接运行并打开文件即可(见图1),对DLL感兴趣的话不妨看看本刊2005年第17期的《动态链接库 Windows的活动大陆》。
Prefetch是垃圾还是钻石?
1.网球比赛中如何节省球员体力
在网球场上,如果球被打飞之后都让球员自己去捡,显然非常浪费时间,不如在场外网球有可能飞到的地方预先安排一些球童,只要有球飞到那里就由球童去捡球,从而节省了球员的体力,这些球童的作用就有点像“预读取机制”。
2.用预读取给程序节省“体力”
首先让我们了解一下什么是Prefetch。在Windows XP及其以后的操作系统中都有“预读取”功能,这个概念有点像我们常说的“缓存”,这里根据微软官方的说法把它称为“预读取机制”。举例来说,当我们在电脑中启动一个DVD播放软件,那么这个程序通常都需要一些DLL(动态链接库)文件进行辅助工作,比如调用一个DLL文件来给视频文件解码。既然每次播放电影的时候都需要DLL文件来解码,那么如果能在启动播放程序的时候就预先将这些DLL读到内存中,播放电影的时候就不必再调用,也就不用访问硬盘了,那不是会大大提高效率吗?没错,“预读取机制”的任务就是这样的:它会监视应用程序在运行时需要调用哪些硬盘文件,下次应用程序启动时,系统就会“聪明”地预先将它们从硬盘中读入内存,从而提高运行效率。
Windows XP的“加速舱”
这种“预读取机制”已经被引入到Windows XP中,并在很大程度上提高了系统速度。Windows XP的预读取文件保存在Windows\Prefetch目录中(见图2),以PF为扩展名,这些文件包括了载入文件的详细信息和载入顺序。每个应用程序都会在Prefetch目录中留下相应的预读取文件,预读取文件描述了应用程序或系统启动时各个模块的装载顺序,其命名方式是以应用程序的可执行文件名为基础,加上一个“-”和描述执行文件完整路径的十六进制值,再加上文件扩展名PF,例如DEFRAG.EXE-273F131E.pf。
当下一次启动系统时,Windows会参考相应的PF文件,将其中记录的所有文件载入内存,而不是像以往一项一项依指令逐个载入文件。假如预读取目录中没有文件,系统会重新监视、创建文件、并保存下来。很明显,定期删除Windows\Prefetch目录中的文件是一件不明智的事情,因为创建文件反而会增加系统负担,降低系统性能。
软件也有助推器?
经常使用各类软件的人,会发现Prefetch这个词并不仅仅存在于Windows目录中。很多朋友都注意到了:在Windows XP中,Windows Media Player(以下简称WMP)的快捷方式的属性菜单中,它的命令并不只是一个简单的“wmplayer.exe”命令,这后面还跟着一个“/prefetch:1”参数(见图3)。对,又是Prefetch!
谣传一:垃圾的Prefetch
这种观点认为:这完全是一个针对WMP的专用参数,对于其他软件来说,只是一个
垃圾参数,对性能没有任何影响。
谣传二:万能的prefetch
看到了Windows Media Player的这个参数,善于联想的人们立刻开始发挥想象力——在很多网站和报刊中都会看到这样一种说法:这个参数将启用软件的预读取技术,可以极大地提高软件的运行速度,推荐大家在任何可执行文件(EXE文件)的快捷方式中加入它!
辟谣:以上两种观点都是错误的
WMP是一个可以完成多种任务的应用程序,比如播放电影、播放音乐、刻录光盘、收听流媒体广播。使用不同的功能时所需的DLL文件和解码器也是不同的。另外双击打开WMV文件和“插入光盘”这两种不同的启动方式,对于DLL的要求也会有不同的要求。如果在各种情况下都使用一样的预读取参数,那无异于囫囵吞枣。使用不匹配的预读取文件的结果是软件浪费了大量时间将不正确的文件读入内存,既降低了效率又白白占用了内存。正是由于这个原因,WMP才为不同环境设计了不同的预读取文件(并且以数字编号),于是就出现了“/prefetch:1”、“/prefetch:2”、“/prefetch:3”……这样的区别。
TIPS
小提示
并不是只有Windows Media Player 才能设置不同的预读文件,所有软件都一样可以这样设置。
谣言还在继续
关于软件的prefetch,还有很多人没有注意到,而且它在命令行方式下运行会引起一些冲突和故障。一些不明情况的人还在不停地向快捷方式中添加“prefetch”参数(比如Kazaa),却不知道正是这个“技巧”导致了软件的瘫痪。微软当然知道这一点,但是它一直保持沉默(沉默是金-_-)……
据我猜测,“添加prefetch能加速软件运行速度”的谣言还会继续,而在此时,发明它的这家世界最大的软件公司对于“prefetch”的秘密一直缄口不言,也许是“有所考虑”吧!
TIPS
小知识
程序运行时需要哪些DLL
程序在运行中调用DLL有两种方式:前期绑定和后期绑定。前者是在程序开始运行时就将所需的DLL全载入内存中,而后者则是在需要DLL中的功能时才向系统申请将其载入内存。对于前者可以使用Dependency Walker(下载地址:http://www.newhua.com/cfan/200517/depends.zip)查看,下载解压后直接运行并打开文件即可(见图1),对DLL感兴趣的话不妨看看本刊2005年第17期的《动态链接库 Windows的活动大陆》。