Как оптимизировать время прохождения макета JavaFX? - PullRequest
0 голосов
/ 12 июня 2018

Я написал приложение JavaFx (JDK 8), которое анализирует закрытый формат XML (XML содержит все атрибуты Shape, такие как координата, размер, заливка, обводка и т. Д.) Для построения графа сцены с примерно 4000-Компоновка 5000 узлов в соответствии с их координатами в SubScene.

Каждый раз, когда я открываю новый закрытый XML, новой SubScene требуется 2-3 секунды с задержкой для отображения на моем экране.

Я пытался "-Djavafx.pulseLogger = true "в аргументе виртуальной машины и показать журнал ниже, но я не знаю, как оптимизировать время показа.Я попытался заставить узел родительской группы без прохода макета, но время пока очень большое.Я также прочитал статьи о том, как оптимизировать производительность, прервать Javafx, но я все еще не могу исправить корректную производительность лага.

PULSE: 637 [570ms:1701ms]
T37 (-570 +570ms): Layout Pass
T37 (0 +484ms): CSS Pass
T37 (484 +9ms): Layout Pass
T37 (493 +4ms): Update bounds
T37 (498 +0ms): Waiting for previous rendering
T37 (498 +16ms): Copy state to render graph
T30 (515 +0ms): Dirty Opts Computed
T30 : 2 different dirty regions to render
T30 : Dirty Region 0: RectBounds { minX:406.0, minY:23.0, maxX:440.0, maxY:38.0} (w:34.0, h:15.0)
T30 : Render Root Path 0: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5812bf43, com.sun.javafx.sg.prism.NGRegion@78dbaadd, com.sun.javafx.sg.prism.NGRegion@4a9171aa, com.sun.javafx.sg.prism.NGRegion@1bb83d84, com.sun.javafx.sg.prism.NGRegion@1486dde6]
T30 : Dirty Region 1: RectBounds { minX:0.0, minY:69.0, maxX:1904.0, maxY:1006.0} (w:1904.0, h:937.0)
T30 : Render Root Path 1: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@1cdbe0a1]
T30 (515 +0ms): Render Roots Discovered
T30 : Slow background path for null
T30 (515 +0ms): Painting
T30 : Slow shape path for null
T30 (515 +1185ms): Painting
T30 (1700 +0ms): Presenting
Counters:
    CacheFilter rebuilding: 1
    Cached region shape image used: 3
    NGRegion renderBackgroundShape slow path: 1
    NGRegion renderBackgrounds slow path: 1
    Nodes rendered: 5384
    Nodes visited during render: 7917
    Rendering region shape image to cache: 1


PULSE: 638 [1499ms:241ms]
T37 (0 +0ms): CSS Pass
T37 (0 +5ms): Layout Pass
T37 (6 +1ms): Update bounds
T37 (7 +195ms): Waiting for previous rendering
T37 (202 +0ms): Copy state to render graph
T30 (202 +0ms): Dirty Opts Computed
T30 : 4 different dirty regions to render
T30 : Dirty Region 0: RectBounds { minX:6.0, minY:1010.0, maxX:142.0, maxY:1037.0} (w:136.0, h:27.0)
T30 : Render Root Path 0: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 1: RectBounds { minX:294.0, minY:1012.0, maxX:444.0, maxY:1035.0} (w:150.0, h:23.0)
T30 : Render Root Path 1: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 2: RectBounds { minX:470.0, minY:1012.0, maxX:534.0, maxY:1035.0} (w:64.0, h:23.0)
T30 : Render Root Path 2: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 3: RectBounds { minX:6.0, minY:70.0, maxX:128.0, maxY:95.0} (w:122.0, h:25.0)
T30 : Render Root Path 3: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@1cdbe0a1, com.sun.javafx.sg.prism.NGRegion@479f54bb, com.sun.javafx.sg.prism.NGRegion@107cfd69]
T30 (203 +0ms): Render Roots Discovered
T30 : Slow background path for null
T30 : Slow background path for null
T30 (203 +15ms): Painting
T30 (218 +0ms): Painting
T30 (218 +0ms): Painting
T30 (218 +1ms): Painting
T30 (219 +22ms): Presenting
Counters:
    Cached region shape image used: 3
    NGRegion renderBackgrounds slow path: 2
    Nodes rendered: 42
    Nodes visited during render: 94
Picture MMI Requset Time Register=  local 275  Tue Jun 12 11:46:49 CST 2018


PULSE: 639 [909ms:159ms]
T37 (0 +0ms): CSS Pass
T37 (0 +0ms): Layout Pass
T37 (1 +1ms): Update bounds
T37 (2 +0ms): Waiting for previous rendering
T37 (2 +0ms): Copy state to render graph
T30 (2 +0ms): Dirty Opts Computed
T30 : 4 different dirty regions to render
T30 : Dirty Region 0: RectBounds { minX:6.0, minY:1010.0, maxX:142.0, maxY:1037.0} (w:136.0, h:27.0)
T30 : Render Root Path 0: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 1: RectBounds { minX:294.0, minY:1012.0, maxX:444.0, maxY:1035.0} (w:150.0, h:23.0)
T30 : Render Root Path 1: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 2: RectBounds { minX:470.0, minY:1012.0, maxX:534.0, maxY:1035.0} (w:64.0, h:23.0)
T30 : Render Root Path 2: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@5aeb10ed, com.sun.javafx.sg.prism.NGRegion@1e40ff4a]
T30 : Dirty Region 3: RectBounds { minX:1.0, minY:96.0, maxX:1903.0, maxY:1005.0} (w:1902.0, h:909.0)
T30 : Render Root Path 3: [com.sun.javafx.sg.prism.NGGroup@2734b5a6, com.sun.javafx.sg.prism.NGRegion@2c4e529a, com.sun.javafx.sg.prism.NGRegion@1cdbe0a1, com.sun.javafx.sg.prism.NGRegion@4c1f5ed1, com.sun.javafx.sg.prism.NGRegion@48f39e62]
T30 (2 +0ms): Render Roots Discovered
T30 : Slow background path for null
T30 : Slow background path for null
T30 (2 +0ms): Painting
T30 (3 +0ms): Painting
T30 (3 +0ms): Painting
T30 (3 +155ms): Painting
T30 (158 +0ms): Presenting
Counters:
    CacheFilter rebuilding: 1
    NGRegion renderBackgrounds slow path: 2
    Nodes rendered: 5419
    Nodes visited during render: 7994

1 Ответ

0 голосов
/ 12 июня 2018

У меня была загрузка XML в FXThread. Я поместил его в Задачу. И это кажется немного лучше, Но до небольшого лага, когда я открываю новый XML в Задаче. Ниже представлен регистратор импульсов.

PULSE: 1620 [16ms:676ms]
T16 (-15 +16ms): Layout Pass
T16 (0 +308ms): CSS Pass
T16 (308 +6ms): Layout Pass
T16 (315 +4ms): Update bounds
T16 (320 +0ms): Waiting for previous rendering
T16 (320 +23ms): Copy state to render graph
T13 (343 +0ms): Dirty Opts Computed
T13 : 2 different dirty regions to render
T13 : Dirty Region 0: RectBounds { minX:406.0, minY:22.0, maxX:440.0, maxY:38.0} (w:34.0, h:16.0)
T13 : Render Root Path 0: [com.sun.javafx.sg.prism.NGGroup@4f54e04e, com.sun.javafx.sg.prism.NGRegion@4b1b2a7e, com.sun.javafx.sg.prism.NGRegion@a8df84, com.sun.javafx.sg.prism.NGRegion@4f89e98d, com.sun.javafx.sg.prism.NGRegion@1192367, com.sun.javafx.sg.prism.NGRegion@17791b79, com.sun.javafx.sg.prism.NGRegion@51ebb2ed]
T13 : Dirty Region 1: RectBounds { minX:0.0, minY:64.0, maxX:1267.0, maxY:650.0} (w:1267.0, h:586.0)
T13 : Render Root Path 1: [com.sun.javafx.sg.prism.NGGroup@4f54e04e]
T13 (344 +0ms): Render Roots Discovered
T13 : Slow background path for null
T13 (344 +0ms): Painting
T13 : Slow background path for null
T13 (344 +331ms): Painting
T13 (676 +0ms): Presenting
Counters:
    CacheFilter rebuilding: 1
    NGRegion renderBackgrounds slow path: 2
    Nodes rendered: 4523
    Nodes visited during render: 6733


PULSE: 1621 [352ms:351ms]
T16 (0 +0ms): CSS Pass
T16 (0 +0ms): Layout Pass
T16 (0 +1ms): Update bounds
T16 (2 +322ms): Waiting for previous rendering
T16 (324 +0ms): Copy state to render graph
T13 (324 +0ms): Dirty Opts Computed
T13 : 1 different dirty regions to render
T13 : Dirty Region 0: RectBounds { minX:5.0, minY:69.0, maxX:130.0, maxY:95.0} (w:125.0, h:26.0)
T13 : Render Root Path 0: [com.sun.javafx.sg.prism.NGGroup@4f54e04e, com.sun.javafx.sg.prism.NGRegion@4b1b2a7e, com.sun.javafx.sg.prism.NGRegion@1bb5992b, com.sun.javafx.sg.prism.NGRegion@76a3f03, com.sun.javafx.sg.prism.NGRegion@42e2bd5f]
T13 (324 +0ms): Render Roots Discovered
T13 : Slow background path for null
T13 : Slow shape path for null
T13 : Slow shape path for null
T13 (325 +4ms): Painting
T13 (329 +22ms): Presenting
Counters:
    NGRegion renderBackgroundShape slow path: 2
    NGRegion renderBackgrounds slow path: 1
    Nodes rendered: 12
    Nodes visited during render: 13

[1622 335ms:16ms][1623 15ms:0ms][1624 0ms:0ms]
...