提问人:Lucas Miyazaki 提问时间:6/16/2022 最后编辑:Lucas Miyazaki 更新时间:6/21/2022 访问量:479
如何在WinForms中优化CEFSharp以渲染繁重的应用程序(例如THREEJS)?
How to optimize CEFSharp in WinForms to render heavy applications (such as THREEJS)?
问:
我开发了一个winforms,向用户展示一个使用3D渲染(带有THREEJS)的Web应用程序。问题在于,并非每个客户端都有足够好的 CPU 来使用此应用程序。通过浏览器访问该应用程序时,该应用程序几乎在每台计算机上都能流畅运行,但在通过 winforms 应用程序访问它时却无法正常运行。这是每个程序的 CPU 使用率:
在 Google Chrome 上运行时,相同的内容使用 2.3% 的 CPU,而运行 CEFSharp 的 winforms 应用程序使用 92.7%。
这是我的winforms组件的代码:
namespace tissuewebs
{
public partial class Form1 : Form
{
public ChromiumWebBrowser chromeBrowser;
public Form1()
{
InitializeComponent();
InitializeChromium();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void InitializeChromium()
{
CefSettings settings = new CefSettings();
settings.CefCommandLineArgs.Add("disable-features", "BlockInsecurePrivateNetworkRequests");
settings.CefCommandLineArgs.Add("disable-gpu", "1");
settings.RemoteDebuggingPort = 8088;
settings.CachePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\CEF";
settings.PersistSessionCookies = true;
CefSharp.Cef.Initialize(settings);
chromeBrowser = new ChromiumWebBrowser("example.com")
{
Dock = DockStyle.Fill
};
this.Controls.Add(chromeBrowser);
}
}
}
是否可以优化我的应用程序,使其使用更少的 CPU?
答:
1赞
amaitland
6/16/2022
#1
首先,您需要启用 GPU 加速。禁用 GPU 加速的 CPU 使用率会更高。
其次,使用 64 位版本以获得更好的性能。您正在将作为 64 位进程运行的 Chrome 与 32 位应用程序进行比较。
第三,您需要确保应用程序具有具有兼容性条目的 app.manifest。否则,性能将受到不利影响。
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of all Windows versions that this application is designed to work with.
Windows will automatically select the most compatible environment.-->
<!-- Windows 7 -->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
有关参考示例,请参阅 https://github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.WinForms/app.manifest。我还建议确保您的应用程序具有 DPI 感知能力。
将您的应用程序与 Chrome 进行比较时,请务必确保将类似版本进行比较。例如,Chrome 102 的性能可能与 CefSharp 100 不同。
评论