JavaFX 2 WebView使用WebKit进行渲染。我的机器没有直接的3D支持,我可以在棱镜日志中看到它
Loading D3D native library ...
succeeded.
Direct3D initialization failed
Adapter validation failed for all adapters
(X) Got class = class com.sun.prism.d3d.D3DPipeline
Prism pipeline name = com.sun.prism.j2d.J2DPipeline
(X) Got class = class com.sun.prism.j2d.J2DPipeline
Initialized prism pipeline: com.sun.prism.j2d.J2DPipeline
GraphicsPipeline.createPipeline: error initializing pipeline com.sun.prism.d3d.D3DPipeline
*** Fallback to Prism SW pipeline
加载的html页面上的滚动速度非常慢。使用Chrome(也使用WebKit)在同一台机器上滚动同一页面的速度非常快。
页面内容主要是文字。没有起伏的java脚本,简单的静态。
我是否需要打开某些设置,或者只是Prism SW管道比Chrome中用于绘制线条和图像的速度慢得多?
OS Windows 7
DirectDraw加速:不可用
Direct3D加速:不可用
AGP纹理加速:不可用
答案 0 :(得分:2)
JavaFX 2.2 WebView使用的Prism SW管道要比Chrome中用于绘制线条和图像的任何内容慢得多。
如果有特定网页导致速度减慢,您可以将其记录为JavaFX performance issues。
JavaFX渲染的上限为60fps,并且有一个未记录的属性可以删除这个上限,但你无论如何都不应该用肉眼注意到它。
您还可以使用系统属性打开和关闭硬件管道。您现在没有使用硬件管道,这可能是因为JavaFX不支持您的硬件加速器。您可以使用未记录的开关强制启动硬件加速管道,但这会产生无法预料的后果。
有text font smoothing property可能会影响WebView文本呈现速度。我不确定如何为WebView打开和关闭此属性。
对于jdk8,core JavaFX rendering以及WebView rendering有很多性能改进 - 包括Chrome中使用的shape clips和gpu accelerated compositing等内容。同样,当您运行软件管道时,您将看不到硬件加速合成的影响,但您仍应该能够从其他jdk8修改中获得一些性能改进。您可以获得preview version of jdk8,其中包括JavaFX的后期开发版本,并查看您的性能是否有所提升。
如果WebView性能至关重要,请使用JavaFX 32位版本,因为该版本当前已打开JavaScript JIT编译器而64位版本未启用。它对渲染速度没有影响,但它可能会影响整体感知速度。 jdk8的发布版本将使用new JavaScript Engine,它应该会看到32位和64位版本的性能都有所提高。
当然,如果添加兼容的硬件卡,那么JavaFX将使用加速渲染路径,渲染性能也应该提高。