作者licheer (00)
看板C_and_CPP
標題[問題] 動態連結和靜態連結的執行速度
時間Tue Jul 7 00:22:14 2009
同一段 function code
分別使用兩種不同呼叫
a.AP 使用 static link 呼叫
b.寫成dll, AP 呼叫 dll 來執行
請問兩者的執行速度會有差異嗎?
會因為使用的連結方式不同,變慢嗎?
THX~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.233.250.201
1F:→ cnj:如果只呼叫一次 差距不大 如果呼叫多次 就要看呼叫的方式 07/07 00:47
2F:→ cnj:如果每次呼叫完成就釋放 要呼叫就在讀一次 這樣就會有比較多 07/07 00:48
3F:→ cnj:時間差 一般來說static一定會比較快 厲害點的編譯器 07/07 00:49
4F:→ cnj:還會讓你常用的Function盡量放在code cache中 會快很多 07/07 00:50
5F:推 littleshan:那為什麼 dynamic linked code 不能做這種最佳化? 07/07 01:12
6F:→ littleshan:Compile 的時候,compiler 不知道 dynamic or static 07/07 01:13
7F:→ littleshan:那是 link 的時候才知道的 07/07 01:13
8F:→ cnj:memory在讀是以page為單位 時常一起用的一系列function 07/07 01:25
9F:→ cnj:放在附近 會有好處 07/07 01:26
10F:→ cnj:static你可以控制要載入到哪塊連續的記憶體 07/07 01:27
11F:→ cnj:把時常一同使用的functuion 放在附近的記憶體中 07/07 01:28
12F:→ cnj:因為是事先分配的 07/07 01:29
13F:→ cnj:但動態的方式 Loadlibrary你並不能指定要讀到哪裡 07/07 01:29
14F:→ cnj:動態載入除非你自己寫以個Loadlibrary (這種事我做過) 07/07 01:30
15F:→ cnj:可以載入到一大段你要的空間中 07/07 01:31
16F:→ cnj:才能用到cache的好處吧 07/07 01:35
17F:推 ledia:那得要一起 compile 才行吧 ? 分別 compile 成 obj 再 link 07/07 01:49
18F:→ ledia:似乎沒能用到這樣的好處 ? 07/07 01:49
19F:→ cnj:不用一起編譯 Link可以控制static要載入到哪個區段的記憶體中 07/07 10:28
20F:→ cnj:事先先分配好 07/07 10:28
21F:推 ledia:那你怎麼會知道哪些要放在一起? @@ 你並不知道使用時的情況 07/07 11:57