https://blog.csdn.net/yujiankk/article/details/17251529
https://blog.csdn.net/jsutluo/article/details/6725461
https://blog.csdn.net/suhuaiqiang_janlay/article/details/51934024
https://code.google.com/archive/p/sawbuck/wikis/SyzygyDesign.wiki
http://blog.gclxry.com/chromium-syzygy-optimization/
优化方案:
1、主要的优化方法和优化的核心思路
(1)优化
启动
的主要方法:
(2)优化的核心思路:
2、从技术上优化
(1)对程序的启动过程中,磁盘碎片文件优化
WIN32程序启动过程包括:
操作系统把程序加载到内存,并建立相应的运行环境;应用程序自身的初始化过程。
作系统加载器的加载过程是,把磁盘中可执行程序的物理文件读入内存,并转换成程序在内存中的表示。而安装包解压完安装文件后,安装文件可能存在一定量的文件碎片,导致一个逻辑上连续的文件,在磁盘上由很多不连续的碎片组成,导致执行IO时需要过多的寻道时间。
可以让安装包安装完成后,将我们安装目录下的文件进行碎片整理下,加快以后的启动速度。
优化方法:
a、修改安装包的解压接口,在文件解压的时候,保证连续的写到硬盘上。
b、
采用开源工具,在安装完后,用此工具对安装后的文件目录进行一次碎片整理
(2)冷启耗时优化,
(主要针对第一次启动或者安装完成后的启动优化)
程序的冷启,就是在计算机启动后 程序的第一次启动,这时调用的大部分代码和数据在内存中是没有的,那么 就会产生页缺失的硬中断,需要从磁盘中把数据读进内存中,众所周知,磁盘 IO 的 速度相比内存是非常慢的,于是程序的冷启就会相对慢一些。
可以针对****.exe的PE文件缺页情况下
,将所有函数按启动过程调用顺序进行二进制重组,也会
有一定的性能提
。
(3)模块加载优化
使用Rebase.exe工具,修改所有***.exe的
各模块的首选基地址,以免某些模块不被加载到首选基地址上,
提高系统性能。使用Bind.exe工具,***.exe执行模块绑定操作,加快启动后的加载dll速度。
3、从业务逻辑加载上优化
以界面显示优化原则,现有的加载业务逻辑顺序是:
处理完之后才会显示出主界面。需要将这个顺序根据功能逻辑再改动一下:在
**.dll中优先创建窗口,其他功能逻辑可以等主界面显示出来后再进行相关的初始化。这种改动的缺点是,代码改动大,牵扯到的业务广,复杂化了代码逻辑,耗时很长,对整个应用框架几乎是推倒重来。建议作为长期的优化方向。
底层框架也需要继续发掘优化速度。