JavaFX 中 WebView 的性能

2022-09-01 05:52:35

我有一个HTML5 UI和一个Java后端,并希望避免在纯java中重建HTML UI,所以我的想法是运行一个本地Web服务器并使用web视图在“本机”窗口中呈现它。解决方案似乎是使用可以嵌入 Swing 的 JavaFX WebView。在纸面上,这听起来很棒(特别是因为他们声称使用WebKit,它在Chrome / Safari中的UI具有更好的性能)。

它有效,但是:性能非常糟糕。比Chrome,Safari(甚至较慢的Firefox)中的相同内容慢几个数量级。它实际上是无法使用的(我的UI大量使用JQuery / JS)。顺便说一句,我正在使用这篇文章中的代码。

问题是:

  1. 任何人都可以支持我的经历吗?我只是做错了什么,还是由JavaFX引起的,因此是“正常的”?

  2. 有什么更好的想法如何实现这一目标?我目前只是简单地启动了系统浏览器,它可以工作,但不太好(看起来不像集成)。


答案 1

我已经使用过WebView相当多,通常性能非常好,非常可用。

  • Html5 合规性很好。
  • JavaScript性能各不相同,但根据Google的V8基准测试(Chrome可能是针对此进行调整的),我发现它的速度大约是最新版本Chrome的三分之一。
  • 渲染性能似乎不是什么大问题。
  • 非常密集的HTML Webapp(例如Chrome实验库中的某些Webapp)的启动速度不如其他一些浏览器快。
  • WebGL不受支持,因此从WebGL回退到图形的软件渲染的站点要慢得多。

我在使用WebView时遇到的最大问题是,对于尖端功能和密集使用而言,它并不像其他浏览器那样稳定,但实际上没有任何严重的性能问题。

以下是一些基准测试统计数据(使用的WebView版本来自JavaFX 2.2 build 9):

合规

运行 html5 测试来测试 html5 合规性(满分 500 分):

Chrome 19      402 + 13 bonus points
Firefox 12     345 +  9 bonus points
WebView 2.2b9  296 +  7 bonus points 
IE 9.0.6       138 +  5 bonus points

运行acid3测试,Webview得分为100/100,与其他测试浏览器相同,但是,与IE9一样,最终渲染有轻微的缺陷。

Javascript

太阳蜘蛛Javascript 基准测试(越低越好):

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

谷歌V8Javascript 基准测试(越高越好):

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

Mozilla KrakenJavascript 基准测试(越低越好):

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

密集画布

旋转3D佛像(越高越好):

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位版本中关闭。这意味着 WebView JavaScript 基准测试在运行 64 位 JavaFX 版本时明显较慢(通常慢 4 到 5 倍),而运行 32 位 JavaFX 版本。


答案 2

JavaScript JIT 在 WebNode for Windows x64 中处于关闭状态。这可能是您问题的原因。


推荐