• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 測試技術
    • 博客
    • 視頻
    • 開源
    • 論壇
    • 沙龍
    • 下載
    • 雜志
    • 招聘

    您的位置:您的位置:軟件測試技術門戶 >> 軟件測試技術 >> 開發語言 >> .net >> 查看資訊

    字號: | 推薦給好友 上一篇 | 下一篇

    通過 Visual C++ 的編程模型和編譯器優化增強您的應用程序

    發布: 2008-5-14 09:49 | 作者: 不詳 | 來源: ccid | 查看: 88次 | 進入領測軟件測試網論壇討論

    領測軟件測試網

    q0n0h"?"zRD w軟件測試技術門戶M;R2O4Y? ga M
    軟件測試技術門戶EO%F,r @s%tuAC
    返回頁首
    o)E'z\(j.M!z為什么 dllexport 不能始終適用
    -Mb.B| a!zCq#U
    V(Qt n L-I
    R1v Vc(L使用 __declspec(dllexport) 有它自己的缺陷。當您有兩個映射(DLL 或 exe)都為托管映射,但通過 dllexport 而不是通過 #using 公開功能時,dllexport 的問題就會暴露。因為 dllexport 是一個本機構造,所以每次使用 __declspec(dllexport) 跨 DLL 邊界調用時,都會先引發從托管到本機的轉換,再引發從本機到托管的轉換。這樣就難以獲得很好的性能。
    `+j-X$RK軟件測試技術門戶 M ~-JZ'kK kFT]
    解決這種性能問題的選擇很有限。沒有簡單的“開關”可以立刻讓 __declspec(dllexport) 成為對托管代碼沒有相關 thunk 的構造。推薦的修復辦法是將導出的功能包裝在一個托管類型(引用或值類/結構)中,導入程序再通過導出 DLL 上的“#using”訪問該類型,從而直接訪問導出 DLL 中的功能。通過這種更改,當從托管客戶端調用這段托管代碼時就不需要進行轉換。圖 8 中對此做了說明,其中 A 部分顯示了與使用 __declspec(dllexport) 相關的成本,B 部分顯示了使用 #using 和將函數包裝在 .NET 類型中所帶來的優化。這種方法的一個潛在問題是導出 DLL 的非托管導入程序不能對 DLL 的功能進行 __declspec(dllimport)。這在進行更改之前應該加以考慮。
    U,p+}6Enw.Dl T7Y
    _(`F(]!hm軟件測試技術門戶nx WC? m$A

    n:uQ S/r#ix圖 8 降低 Thunk 成本
    F{&u!v H{2X7[;L%j)w
    &c^ `'mIDp 老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>