延迟加载
简述:
由程序本身指定动态库加载时机的优化策略。
实现方式:
1、显示调用动态库的延迟加载策略:通过代码控制动态库的加载时机(kernel32.dll中的LoadLibrary函数)。
2、隐式调用动态库的延迟加载策略:通过编译代码时增加相应加载条件实现延迟加载。不同的编译环境有不同方法(VS、CMake...)。
优点:减少大型程序的启动时间(启动时必须加载的动态库少了)。
延迟绑定
简述:
操作系统提供的动态链接器的优化策略(查找符号、重定位)。
实现方式:
将动态库一经载入至内存立即进行该动态库的所有符号的查找和重定位改为延迟至第一次调用某动态库函数时动态链接器才去查找该符号和重定位,减少不必要符号的查找和重定位的时间花费。每次通过访问GOT和PLT表进行函数调用。
优点:提高程序性能。