なぜ HTML/Web UI の応答が WinForms/WPF/Android View/Native UI よりも遅いのですか?
ネイティブ UI には、Web UI の CSS、DOM、javascript イベント以外のスタイル、要素のネスト、イベントもあります。
イベント応答時間には、フォーカスの変更、ドロップダウン、スクロール、アニメーションの移動、アニメーションのサイズ変更などが含まれます。
DOM ツリーの挿入/置換も遅く、10000 文字の html を挿入すると、Android 4.0 の Google Chrome で 100 ミリ秒かかりますが、テンプレートの解析には 20 ミリ秒しかかかりません (jQuery マイクロ テンプレート)。
イベント応答が遅くなる最大の要因は、おそらく次のとおりです。
- 並列 JavaScript プロセス間の UI ロック。
- レンダリング エンジンは、JavaScript ワーカーからの新しい UI 変更メッセージを処理するには遅すぎます。特に、ブラウザのレンダリング エンジンが最後の UI 更新でビジー状態の場合 (ポイント 3 のため);
- HTML レイアウト メソッド (例: css カスケード、インライン フロー レイアウト、レスポンシブ レイアウトなど) は、部分的な UI の更新を遅くする場合があります。
- html/xml の解析には長い時間がかかります。ヒント: Android ビューのインフレーションは、ビルド時に行われる XML ファイルの前処理に大きく依存しています ( http://developer.android.com/reference/android/view/LayoutInflater.html ) 。
HTML および CSS 標準のサブセットは、webview アプリ開発の将来のソリューションになる可能性があります。
http://www.silexlabs.org/haxe/cocktail/
http://www.terrainformatica.com/htmlayout/
https://github.com/tombenner/nui
http://steelratstory.com/steelrat-products/wrathwebkit
http://trac.webkit.org/wiki/EFLWebKit
https://github.com/WebKitNix/webkitnix
http://qt-project.org/doc/qt-4.8/richtext-html-subset.html
http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/
ネイティブ UI マークアップ言語の山: http://en.wikipedia.org/wiki/User_interface_markup_language
これらのネイティブ UIML を置き換える単純化された HTML 標準と単純化された Webcore レイアウト エンジンがないのはなぜですか?
kivy.org プロジェクトでサブセット html を実現できるかもしれません。
PC、Android ブラウザ = アプリケーションスレッド + UI スレッド
iOS ブラウザ = アプリケーション スレッド + UI データ スレッド + UI ハードウェア スレッド (CoreAnimation/OpenGL ES)
iOS ブラウザでは、アプリケーション スレッドが UI ハードウェア スレッドを直接呼び出すことができました。