【问题标题】:.NET WebBrowser poor JavaScript performance.NET WebBrowser 糟糕的 JavaScript 性能
【发布时间】:2013-05-09 00:04:52
【问题描述】:

我正在使用 .NET WebBrowser Control (2.0) 在我的应用程序中查看 Internet 上的网站——效果很好!不幸的是,我们发现了一个巨大的缺点:速度。据我所知,该控件在 JavaScript 中的表现始终非常很差(在 sunspider 中为 6000 毫秒以上,而在 IE10 中为 150 毫秒)。这也可以通过使用 Maxthon 浏览器的“Retro”模式、一个最小的工作示例(即一个仅包含浏览器而没有其他逻辑的简单表单)和 Visual Studio 的内置浏览器来验证——它们都表现同样糟糕。它们都使用 IE10 版本的控件(通过注册表打开),因此理论上可以预期类似的性能,或者我们认为。 使用 Spy++ 查看 IE10 和使用托管控件的程序之间的差异,可以找到 Shell DocObject View 的附加包装器:ShellEmbedding。

http://imgur.com/csUDdaU在DesktopGap托管的WebBrowser控件的下部显示包装器,而在上部没有ShellEmbedding的情况下可以看到IE的浏览器窗口。

我认为,这是导致性能不佳的原因 - 但我既不知道解决这个问题的方法,也没有任何好的资源 - 这导致我的问题:

有没有办法加快 WebBrowser 控件的性能?

到目前为止,我们的主要想法是以某种方式移除 ShellEmbedding 并直接实例化 Shell DocObject View(如果可能); GPU_RENDERING 已启用且 IE10 模式处于活动状态 (http://msdn.microsoft.com/en-us/library/ee330731%28v=VS.85%29.aspx)。

另外,似乎CSS处理也比IE差,所以可能有联系。

干杯,

克劳斯

【问题讨论】:

    标签: .net performance webbrowser-control


    【解决方案1】:

    我的建议是检查您是否使用了正确的 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 WebBrowser 应用程序:~470ms 铬:48 毫秒

    如您所见,在我的测试中,IE10 和 WebBrowser 应用程序之间似乎几乎没有区别。不同之处可能是应用程序并行执行其他 CPU 处理,这可能需要几毫秒。但是,与 chrome 的差异是 10 倍,这非常了不起。

    问候, 大卫

    【讨论】:

    • 感谢您的回答,但我们已经解决了问题:我的用户配置文件(或我的注册表,谁知道?)有问题,并且重置它会提高 IE 性能:D
    【解决方案2】:

    在尝试在其他 PC 上重现此问题后,似乎是我的 PC - 或者更具体地说是我的用户配置文件 - 是问题所在。但是我们不知道为什么会出现这种情况,所以只需重置它,WebBrowser 的性能就再次处于可接受的水平。

    感谢您的努力;)

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      相关资源
      最近更新 更多