1 我用cmake把void Myadd(){};這個(gè)函數(shù)定義封裝為dll或者lib 然后加到VS庫(kù)里運(yùn)行2 直接在vs里定義void Myadd(){};然后直接運(yùn)行我知道,即使直接定義運(yùn)行也是會(huì)生成lib或者dll的吧?但是這倆速度有差別嗎? 差別大不大?我自己做的實(shí)驗(yàn),調(diào)用人家的dll的速度就是比我自己復(fù)制人家的代碼的速度要快。
2 回答

動(dòng)漫人物
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
一般說(shuō)來(lái),如果同一段代碼,一個(gè)寫成DLL,一個(gè)作為函數(shù)直接定義,則DLL調(diào)用肯定要慢一些。原因如下:
一個(gè)程序如果要使用DLL中的函數(shù),則必須經(jīng)過(guò),如下步驟:
1、將DLL文件裝入內(nèi)存,win32的方法是 :LoadLibrary(...);
2、取得指定的函數(shù)的入口地址,方法好像是: GetProcessAddr(.....)
3、通過(guò)函數(shù)指針,調(diào)用函數(shù)。
而直接在程序中定義函數(shù),則沒(méi)有前兩步,函數(shù)的入口地址在程序裝入時(shí)就確定了。

青春有我
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
本地的代碼不會(huì)比人家的慢,這是可以肯定的,可能別人的是Release版,你的是Debug版本,Release版本是經(jīng)過(guò)優(yōu)化的。性能會(huì)提升比較多。
- 2 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報(bào)
0/150
提交
取消