作者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