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