如何在WinForms中优化CEFSharp来渲染重型应用程序(例如THREEJS)?

问题描述 投票:0回答:2

我开发了一个 winforms,向用户展示一个使用 3D 渲染的 Web 应用程序(使用 THREEJS)。问题是并非每个客户端都有足够好的 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?

winforms three.js chromium cefsharp
2个回答
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 不同。


0
投票

我目前正在做一个类似的项目,如果我们连接起来是不是很酷?

© www.soinside.com 2019 - 2024. All rights reserved.