我有一个关于共享库与静态库加载时间的问题。
假设我有一个使用 liba、libb、libc 的可执行文件 foo.exe。同样在给定时间,机器上运行的可执行文件实例超过 10 个。
现在,如果上述 3 个库是共享库:第一个实例被加载到 RAM 中:所用时间将是 foo.exe 的 main() 加载内存所用的时间(假设它可以忽略不计)+ 加载 liba 的时间 + 加载时间libb + time to load libc 2nd instance is started : 现在假设这个可执行文件的第二个实例正在运行。由于所有库都已加载到主内存中,因此仅将 main() 加载到内存中所花费的时间可以忽略不计。
现在,如果上述 3 个库是静态库:第一个实例被加载到 RAM 中:所花费的时间将是 foo.exe 的 main() 加载内存所花费的时间(假设它可以忽略不计)+ 加载 liba 的时间 + 加载时间libb + 加载 libc 的时间(当然,它现在是整个可执行文件的所有部分)第二个实例已启动:现在假设该可执行文件的第二个实例正在运行。所用时间将再次是 foo.exe 的 main() 加载内存所用的时间(假设它可以忽略不计)+ 加载 liba 的时间 + 加载 libb 的时间 + 加载 libc 的时间。(因为每个可执行文件都不能共享库,因为它们是静态库)
所以我的结论是,使用静态库加载时间会更长。但有人告诉我,共享库在加载过程中比静态库需要更多时间,所以会有延迟,所以共享库不是一个好的选择。这怎么可能 ?