大型应用程序/文件加载时间

Eli*_*sky 1 windows performance load-time

我相信很多人都注意到,当你有一个大型应用程序(即需要几MB的DLL)时,它第二次加载的速度比第一次快得多.如果您在应用程序中读取大文件,也会发生同样的情况.第一次播放后它的读取速度要快得多.

这有什么影响?我想这是硬盘驱动器缓存,或者操作系统增加了一些自己的内存缓存.

您使用什么技术来加速大型应用程序和文件的加载时间?

提前致谢

注意:问题涉及Windows

补充:影响操作系统缓存大小的因素是什么?在某些应用程序中,文件在一分钟左右后再次缓慢加载,因此缓存填写一分钟?

pax*_*blo 9

有两件事可以影响这一点.第一个是硬盘缓存(由磁盘完成,影响很小,操作系统往往会产生更大的影响).第二个是Windows(和其他操作系统')没有理由在他们完成它们时卸载DLL,除非其他东西需要内存.这是因为DLL可以在进程之间轻松共享.

因此,即使在使用它们的应用程序消失之后,DLL也有一种闲散的习惯.如果另一个应用程序决定需要DLL,它已经在内存中,只需要映射到进程地址空间.

我已经看到一些应用程序预先加载了他们需要的DLL(通常称为QuickStart,我认为MS Office和Adobe Reader都这样做),因此感知的加载时间更好.


Dou*_*ugN 6

Windows的内存管理器实际上很漂亮 - 它为内存请求提供服务并充当磁盘缓存.如果系统上有足够的可用内存,最近访问过的大量文件将驻留在内存中.在需要物理内存之前,这些DLL将保留在缓存中 - 所有这些都是CacheManager.

至于如何提供帮助,请查看延迟加载您的DLL.LoadLibrary的优点仅在您需要时,但是自动使您在所有代码上都没有LoadLibrary/GetProcAddress.(很好自动,只需要添加一个链接器命令开关):

http://msdn.microsoft.com/en-us/library/yx9zd12s.aspx

或者你可以预装像Office和其他人一样(如上所述),但我个人讨厌 - 在初始启动时减慢计算机速度.