JavaFX PulseLogger-如何查找未缓存的节点?

时间:2018-09-15 13:40:20

标签: javafx rendering gluon-mobile javafxports pulse

在滚动时以及需要重新渲染场景时,我的JavaFX应用程序都出现了一些延迟。在JavaFX中启用脉冲记录器,我可以看到每个脉冲都重新渲染了许多节点(如下例所示)。

PULSE: 3310 [16ms:26ms] 
T1 (0 +0ms): CSS Pass 
T1 (0 +0ms): Layout Pass 
T1 (0 +0ms): Update bounds
T1 (0 +13ms): Waiting for previous rendering 
T1 (13 +0ms): Copy state to render graph 
T7 (14 +0ms): Dirty Opts Computed 
T7 : 1 different dirty regions to render 
T7 : Dirty Region 0: RectBounds { minX:366.0, minY:143.0, maxX:374.0, maxY:539.0} (w:8.0, h:396.0) 
T7 : Render Root Path 0: [com.sun.javafx.sg.prism.NGRegion@bd6cd80, com.sun.javafx.sg.prism.NGRegion@b6f5240, com.sun.javafx.sg.prism.NGRegion@1347d5a0, com.sun.javafx.sg.prism.NGRegion@b982360, com.sun.javafx.sg.prism.NGRegion@b9826c0] 
T7 (14 +0ms): Render Roots Discovered 
T7 (14 +1ms): Painting 
T7 (16 +10ms): Presenting 
Counters:
        CacheFilter rebuilding: 1
        Nodes cached: 8
        Nodes rendered: 19
        Nodes visited during render: 25

是否有一种简单的方法来找到重新渲染的那19个节点,以便我可以对其进行缓存以提高性能?

1 个答案:

答案 0 :(得分:0)

不,没有简单的方法。整个脉冲信息消息是内部API。如果需要渲染节点,则从NGNode(公众Node的对等方)以其doRender方法对“已渲染的节点”计数器进行递增。 PulseLoggerPrintLogger类处理信息的记录和打印。

您将不得不修改这些类,以使NGNode不仅增加计数器,还发送其自己的信息(例如id或name);或以某种方式拦截方法调用。

submit a request的替代方法是,它可能会在将来的版本中提供。