2013-05-14 37 views
1

我使用.NET WebBrowser控件(2.0)在我的應用程序中查看Internet上的網站 - 工作正常!不幸的是我們發現了一個巨大的缺點:速度。據我發現,控制一直執行非常差 JavaScript(在sunnsider 6000ms + IE10中150ms)。這也可以通過使用傲遊瀏覽器的「復古」模式,一個最小工作示例(即只包含瀏覽器且不包含其他邏輯的簡單表單)和Visual Studio內置瀏覽器來驗證 - 它們的性能同樣差。他們都使用IE10版本的控件(通過註冊表打開),因此理論上可以預期類似的性能,或者我們認爲是這樣。 使用Spy ++查看IE10和使用託管控件的程序之間的差異,可以找到Shell DocObject View的其他包裝:ShellEmbedding。.NET WebBrowser糟糕的JavaScript性能

http://imgur.com/csUDdaU在DesktopGap的託管的WebBrowser控件的下半部分顯示了包裝,而在上半部分可以看到IE的瀏覽器窗口沒有ShellEmbedding。

這一點,我相信,這是負責的表現不佳 - 但我也不知道解決的辦法也沒有這方面的任何良好來源 - 這使我對我的問題:

有沒有一種辦法加快WebBrowser控制的性能?

到目前爲止,我們的主要想法是以某種方式刪除ShellEmbedding並直接實例化Shell DocObject視圖(如果可能的話); GPU_RENDERING已啓用且IE10模式處於活動狀態(http://msdn.microsoft.com/en-us/library/ee330731%28v=VS.85%29.aspx)。

此外,似乎CSS處理也比在IE中差,所以也許有一個連接。

乾杯,

克勞斯

回答

0

試圖重現上其他電腦的問題之後,似乎我的電腦 - 或者更具體地說我的用戶配置文件 - 是問題。然而,我們無法弄清楚爲什麼會出現這種情況,所以只需重新設置它,WebBrowser的性能再次處於可接受的水平。

感謝您的努力;)

0

我的建議是檢查您是否使用了正確的DOCTYPE指令或正確的瀏覽器仿真模式。

我也使用WebBrowser組件並通過註冊表強制它使用IE10模式,而不管doctype指令(設置「HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION \ myexe.exe」爲DWORD 10001 (十進制)

測試這個HTML頁面,看看是否有在JS速度的差異:

<!doctype html> 
<html> 
<head> 
<script> 
    var tick, tock; 
    function start() { 
     tick = Date.now(); 
     for (var i = 0; i < 10000; ++i) { 
      var span = document.createElement('span'); 
      testDiv.appendChild(span); 
      testDiv.removeChild(span); 
     } 
     tock = Date.now(); 
     alert(tock - tick); 
    } 
</script> 
</head> 
<body> 
    <button onclick="start();">Click to start</button> 
    <div id="testDiv"></div> 
</body> 
</html> 

在我的電腦,我得到了以下結果: IE10:〜430ms web瀏覽器的應用程序:〜 470ms Chrome:48ms

正如您所看到的,在我的測試中,IE10和WebBrowser應用程序似乎沒有什麼區別。區別可能是該應用程序並行執行其他CPU處理,可能需要幾毫秒。然而,與鉻的差異是10倍,這是相當驚人的。

問候, 大衛

+0

謝謝您的回答,不過我們已經解決了這個問題:什麼是錯我的用戶配置文件(或我的註冊表,誰知道),並重新再推IE性能:d? – claus 2013-05-27 08:16:52