簡體   English   中英

為什么 Qt Webassembly 應用程序啟動時間過長?

[英]Why does Qt Webassembly app start too long?

我正在使用 QT Webassembly (6.3) 檢查示例 (QtQuickControls 2.0),通過 LAN 將應用程序加載到網絡瀏覽器中需要很長時間,尤其是在智能手機上與筆記本電腦相比。 太慢了大約 40 秒。 正如我在屏幕上看到的那樣,大多數時候它是“正在編譯”。

  1. 在這種情況下,什么是“編譯”? 我認為 webassembly 代碼已經編譯,只需要運行。
  2. QT Webassembly 應用程序總是這樣慢嗎? 有什么辦法讓它加載得更快嗎? 至少第一次加載,然后從緩存中運行它,因為現在如果頁面被刷新,它會花費同樣多的時間來重新加載應用程序。

我已經檢查了 Felgo 演示應用程序(我希望它們非常完善),但在我的智能手機上,加載重型示例大約需要 20-30 秒。 https://felgo.com/try-wasm/

本例中的“編譯”指的是 qtloader.js 內部調用的WebAssembly.compile() 這基本上將 WASM 二進制代碼加載到網頁中。

根據qtloader.js默認模板中的注釋,使用回退時會顯示“正在編譯”。 通常它應該說“下載/編譯”,這是更快的方法。

  return WebAssembly.compileStreaming(response).catch(function(error) {
      // compileStreaming may/will fail if the server does not set the correct
      // mime type (application/wasm) for the wasm file. Fall back to fetch,
      // then compile in this case.
      return fetchThenCompileWasm(response);
  });

因此,請檢查是否按照評論建議正確設置了 mime 類型。

提高性能的第二個選項是在您的 Web 服務器設置中啟用 gzip 壓縮。 WASM 文件壓縮得很好,例如在我的測試中,一個 13 MB 的文件被壓縮到了 5 MB。 這將使原本相當大的下載速度更快一些。

但即使經過所有優化,Qt for WASM 仍必須下載並加載完整的 Qt GUI 框架,這需要時間。 在我的 Android 手機上,較小的 WASM GUI 將在大約 3 到 4 秒內加載到本地網絡上,但這在很大程度上取決於設備的強大程度(我使用CDP Browser WASM GUI 進行了測試,它基本上是一個顯示一些數據的 QTreeView)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM