我有一個關於共享庫vs靜態庫加載時間的問題。共享庫vs靜態庫加載時間
假設我有一個使用liba,libb,libc的可執行文件foo.exe。同時在給定的時間,機器上運行的可執行文件超過10個。
現在,如果上述3個庫是共享庫: 第一次Insance加載到RAM中:花費的時間將是foo.exe的main()被加載的內存(假設其可忽略不計)+加載時間liba +加載libb的時間+加載libc的時間 第二個實例已啓動:現在假設運行此可執行文件的第二個實例。由於所有的庫文件 已經加載到主存儲器中,所花費的時間僅用於將main()加載到可忽略的存儲器中。
現在,如果上述3個圖書館是靜態庫: 第一Insance被加載到RAM:採取將通過主)foo.exe的採取(時間的時間被加載 存儲器(假設其忽略不計)+時間加載liba +加載libb的時間+加載libc的時間(Offcourse它現在是整個可執行文件的所有部分) 第二個實例已啓動:現在假設運行此可執行文件的第二個實例。所花費的時間將會是 再次由foo.exe的main()加載內存所花費的時間(假設其可忽略不計)+加載liba +時間加載libb +加載libc所需的時間。 (因爲每個可執行文件不能共享庫,因爲它們是靜態庫)
所以我的結論是,使用靜態庫的時候會更多。但是我被告知共享庫在加載過程中比靜態庫需要更多的時間,所以會有延遲,所以共享庫不是一個好的選擇。這怎麼可能 ?
非常感謝這個令人難以置信的快速反應,我們有2個架構的場景,我已經給我的問題作爲我的問題的答案請在下面找到它。 – sud