web-dev-qa-db-ja.com

JavaFXでのWebViewのパフォーマンス

HTML5 UIとJavaバックエンドがあり、プレーンJavaでHTML UIを再構築しないようにしたいので、ローカルWebサーバーを実行し、Webviewを使用して「ネイティブ"window。解決策は、swingに埋め込むことができるJavaFX WebViewを使用することであるようです。紙上ではそれは素晴らしいように聞こえます(特に、Chrome/Safari)。

それは機能しますが、パフォーマンスは非常に悪いです。 Chrome、Safari(またはさらに遅いFirefox)の同じものよりも桁違いに遅い。それは文字通り使用できません(私のUIはJQuery/JSをかなり頻繁に使用しています)。ところで、私は この投稿 のコードを使用しています。

質問は:

  1. 誰かが私の経験を二番目にすることはできますか?私は単に何か間違ったことをしているのですか、それともJavaFXが原因で「正常」になっているのですか?

  2. これを達成する方法はありますか?私は現在、システムブラウザーを起動していますが、正常に動作しますが、ナイスではありません(統合されているようには見えません)。

34
Daniel

私はWebViewをかなり使用しましたが、通常、パフォーマンスは完全に良好で、非常に使いやすかったです。

  • HTML5コンプライアンスは良好です。
  • JavaScriptのパフォーマンスはさまざまですが、最近のバージョンのChrome GoogleのV8ベンチマーク(Chromeはおそらく調整されている)によると)の速度の約3分の1でした.
  • レンダリングのパフォーマンスはそれほど問題ではないようです。
  • Chrome実験ライブラリの一部など、非常に集中的なHTML Webアプリケーションは、他の一部のブラウザほど速く起動しませんでした。
  • WebGLはサポートされていないため、WebGLからグラフィックのソフトウェアレンダリングにフォールバックするサイトははるかに遅くなります。

WebViewで私が抱えていた最大の問題は、他のブラウザーほどEdge機能のカットや集中的な使用が安定していないことですが、実際には深刻なパフォーマンスの問題はありません。

以下は、いくつかのベンチマーク統計です(使用されるWebViewバージョンは、JavaFX 2.2ビルド9から供給されました):

コンプライアンス

html5 テストを実行してhtml5コンプライアンスをテストします(スコアは500)。

 Chrome 19 402 + 13ボーナスポイント
 Firefox 12 345 + 9ボーナスポイント
 WebView 2.2b9 296 + 7ボーナスポイント
 IE 9.0.6 138 + 5ボーナスポイント

Acid テストを実行すると、webviewのスコアは他のテストブラウザーと同じ100/100ですが、IE9と同様に、最終的なレンダリングにはわずかな欠陥があります。

Javascript

Sunspider Javascriptベンチマーク(低いほど良い):

 IE 9.0.6 146.7ms 
 Chrome 19 151.5ms 
 Firefox 12 185.8ms 
 WebView 2.2b9 199.5ms 

Google V8 Javascriptベンチマーク(高いほど良い):

 Chrome 19 15323 
 Firefox 12 9557 
 WebView 2.2b9 5145 
 IE 9.0.6 3661 

Mozilla Kraken Javascriptベンチマーク(低いほど良い):

 Chrome 19 2416.8ms 
 Firefox 12 2112.9ms 
 WebView 2.2b9 7988.9ms 
 IE 9.0.6 9403.0ms 

集中的なキャンバス

回転 D仏 (高いほど良い):

 Chrome 19 60fps 
 Firefox 12 43fps 
 IE 9.0.6 16fps 
 WebView 2.2b9 7fps 

JQuery

JQueryテストスイート 実行(低いほど良い):

 Chrome 19 21826ms 
 WebView 2.2b9 22742ms 
 Firefox 12 23554ms 
 IE 9.0.6 28247ms 

上記のベンチマーク(Windows 7デスクトップで実行)に基づいて、WebViewが安定していて機能している限り、WebViewと他のブラウザーのパフォーマンスは問題になりません(アプリに多くの機能がない限り) 3D回転する仏像。。。:-).

更新

Utaの回答にあるように、JavaScript JITコンパイラは、JavaFX 2.2のWin 32ビットビルドではオンに、JavaFX 2.2の Win 64ビットビルドではオフ に切り替えられています。つまり、64ビットJavaFXバージョンと32ビットJavaFXバージョンを実行すると、WebView JavaScriptベンチマークが大幅に遅くなります(通常は4〜5倍遅くなります)。

45
jewelsea

Windows x64のWebNodeではJavaScript JITがオフになっています。それが問題の原因である可能性があります。

8
uta

また、私のWebサイト( https://mdemo.cqg.com )のJavaFX WebViewのパフォーマンスの低下(速度の低下、再描画の問題)にも遭遇しました。グーグルの後でトピックに出くわしました JavaFX 2.0 WebViewをSwingに統合するJava SE 6アプリケーション 。答えの中にはJxBrowserを使用する提案があります( http://www.teamdev.com/jxbrowser )-Java用のChromiumベースのSwing/JavaFXコンポーネントです。自分のサイトで試してみました。サイトのパフォーマンスは良好です-速度低下や再描画の問題はありません(オリジナルで発生) WebView)。

6

この状況であなただけではありません。私はまだwebviewとgoogleマップに問題があります。以下のリンクをご覧ください。今のところ、私はあなたに何の答えもありません、そしてそれは私が知っている非常に不快です...

私の投稿の例:- https://community.Oracle.com/message/12356161

可能であれば、これを賛成してください:- https://javafx-jira.kenai.com/browse/RT-33217

5
flowx1710

JavaFX webViewが遅く見える理由の1つは、Webブラウザーとは異なり、何もキャッシュしないためです。これは補完する必要があります。

4
Spiff