cefsharp - WinForms 和 Wpf 示例之间的巨大性能差异

发布时间 2023-09-05 10:41:10作者: China Soft

https://www.coder.work/article/7217456

我注意到在使用 http://www.vsynctester.com 时 CefSharp.WinForms.Example 和 CefSharp.Wpf.Example 之间存在非常重要的性能差异(以 FPS 计)

在我的显卡控制面板和 CefExample Init() 中的设置中关闭 VSync 时

settings.CefCommandLineArgs.Add("disable-gpu-vsync", "0");

对于 CefSharp.WinForms.Example,我得到大约 500 FPS(稳定) 对于 CefSharp.Wpf.Example,我几乎无法达到 30 FPS

我知道 Wpf 使用离屏渲染,但如何解释相同网页的巨大性能差异?

我使用的是装有 Win 8.1 和 NVidia GT 750M 显卡的 MacBook Pro。 CefSharp 版本为 8755a9496ffbd5f21bc6ef062bce687a22d83938(2015 年 3 月 1 日)和 Cef 版本 3.2171.1979

 

最佳答案

 

The maximum rate in frames per second (fps) that CefRenderHandler::OnPaint will be called for a windowless browser. The actual fps may be lower if the browser cannot generate frames at the requested rate. The minimum value is 1 and the maximum value is 60 (default 30).

CEF 文档的直接引述参见 http://magpcss.org/ceforum/apidocs3/projects/%28default%29/_cef_browser_settings_t.html#windowless_frame_rate

整个过程更受 CPU 限制而不是 GPU 限制。缓慢的部分是位图缓冲区在显示之前被复制到内存中。 CEF 还支持目前尚未实现的 DirtyRects,因此即使是很小的图形更改也会强制整个屏幕重绘。

当上游 CEF 问题 1006 得到解决后,我们就可以考虑进行更多改进。 https://code.google.com/p/chromiumembedded/issues/detail?id=1006&q=label%3AOSR