我們有一個VB6應用程序,可以在啓動時啓動我們的.NET代碼。改進COM Interop Cold Start
冷啓動在Windows XP機器上需要持續約22秒。同一臺機器上的熱啓動約爲4秒鐘。
對於冷啓動,Windows Vista/7大約需要5秒,對於熱啓動大約需要3秒。
基於以上所述,我假設延遲是與磁盤訪問相關的,並且由於SuperFetch,Vista/7不受影響。
顯然,我們需要提高XP的冷啓動性能。我正在考慮創建一個在Windows啓動時在系統托盤中運行的「熱身」應用程序......但在我們花費精力之前,我想查看是否還有其他建議。
我已經試過ngen'ing我們的程序集,似乎沒有任何區別。
在添加了一些跟蹤代碼後,我發現VB6代碼只需要1秒左右就可以跨越.NET邊界......但.NET中的初始化代碼大約需要20秒。它做了一些反思,我猜想延遲是從磁盤加載GAC程序集......但我不能完全確定。
對此提出建議?
[.NET JIT編譯的代碼是否被緩存了?在哪裏?](http://stackoverflow.com/questions/3295622/is-the-net-jit-compiled-code-cached-where) – 2012-02-15 05:07:07
你確定沒有簡單的東西你運行在較新的機器(s ),它使用CLR並在啓動或登錄時有效地「預加載」它?我知道,自從ATI收購了與視頻適配器相關的Catalyst品牌軟件之後,其他供應商也可能會這樣做。 – Bob77 2012-02-15 05:41:29
是不是什麼閃屏:) – tcarvin 2012-02-15 15:25:38