-
Bug
-
Resolution: Fixed
-
P3
-
8
ObservableList changes integrated into 8.0-graphics-scrum-h99 lead to serious Guimark2.Bitmap
performance regression:
WinXP-mid-range: -23%, 15.5 fps => 12 fps
Win7-high-end: -33%, 30 fps => 20 fps
According to Hudson the full list of changes went into 8.0-graphics-scrum-h99 is:
1.RT-24855 part 2 of Gtk: Opening a dialog stage from a table context menu action leaves
system in an unresponsive state — Alexander Zvegintsev / detail
2. merge — Martin Sladecek / detail
3. Automated merge with file:///home/martin/work/javafx/jfx-30-sync/rt-closed — Martin Sladecek / detail
4. BaseObservableList implementation in com.sun. package — Martin Sladecek / detail
5.RT-24855 Gtk: Opening a dialog stage from a table context menu action leaves
system in an unresponsive state — Alexander Zvegintsev / detail
6. merge — Martin Sladecek / detail
7. BaseObservableList implementation in com.sun. package — Martin Sladecek / detail
I got JPA profiles on Win7-high-end machine and I see that the time spent in
javafx.scene.Node.toBack() and javafx.scene.Node.toFront() has been increased
from 3.565 sec to 10.900 sec and from 2.212 sec to 6.322 sec correspondingly
(total measurement time was 30 secs).
=== build h98 ===
+- 10.040 (32%) guimark2.BitmapTest.testIteration()
+- 3.565 (11%) javafx.scene.Node.toBack()
| +- 3.563 (11%) javafx.scene.Parent.impl_toBack(javafx.scene.Node)
| | +- 3.546 (11%) com.sun.javafx.collections.VetoableObservableList.remove(java.lang.Object)
| | | +- 3.546 (11%) com.sun.javafx.collections.ObservableListWrapper.remove(java.lang.Object)
| | | +- 3.442 (11%) com.sun.javafx.collections.ObservableListWrapper.indexOf(java.lang.Object)
| | | | +- 3.442 (11%) java.util.ArrayList.indexOf(java.lang.Object)
| | | +- 0.102 (0%) com.sun.javafx.collections.VetoableObservableList.remove(int)
| | +- 0.013 (0%) com.sun.javafx.collections.VetoableObservableList.add(int, java.lang.Object)
| | +- 0.003 (0%) com.sun.javafx.collections.ObservableListWrapper.get(int)
| +- 0.001 (0%) javafx.scene.Node.getParent()
+- 2.212 (7%) javafx.scene.Node.toFront()
=== build h99 ===
+- 19.831 (64%) guimark2.BitmapTest.testIteration()
+- 10.900 (35%) javafx.scene.Node.toBack()
| +- 10.900 (35%) javafx.scene.Parent.impl_toBack(javafx.scene.Node)
| +- 10.635 (34%) com.sun.javafx.collections.VetoableListDecorator.remove(java.lang.Object)
| | +- 10.536 (34%) java.util.AbstractList.indexOf(java.lang.Object)
| | | +- 3.968 (13%) java.util.AbstractList$Itr.next()
| | | +- 3.257 (10%) java.util.AbstractList$Itr.hasNext()
| | | +- 0.318 (1%) java.lang.Object.equals(java.lang.Object)
| | +- 0.099 (0%) com.sun.javafx.collections.VetoableListDecorator.remove(int)
| +- 0.262 (1%) com.sun.javafx.collections.VetoableListDecorator.add(int, java.lang.Object)
| +- 0.002 (0%) com.sun.javafx.collections.VetoableListDecorator.get(int)
+- 6.322 (20%) javafx.scene.Node.toFront()
Steps to run Guimark2.Bitmap benchmark:
- cd JFX_WS/tests/performance/GUIMark2
- ant
- java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/GUIMark2.jar" guimark2.BitmapTest -monsters 18000
change the number of monsters to align to you system capabilities.
You can also find helpful to run with "-Djavafx.animation.fullspeed=true".
Perhaps these changes need to be rolled back as this is big regression in one of most important benchmark.
performance regression:
WinXP-mid-range: -23%, 15.5 fps => 12 fps
Win7-high-end: -33%, 30 fps => 20 fps
According to Hudson the full list of changes went into 8.0-graphics-scrum-h99 is:
1.
system in an unresponsive state — Alexander Zvegintsev / detail
2. merge — Martin Sladecek / detail
3. Automated merge with file:///home/martin/work/javafx/jfx-30-sync/rt-closed — Martin Sladecek / detail
4. BaseObservableList implementation in com.sun. package — Martin Sladecek / detail
5.
system in an unresponsive state — Alexander Zvegintsev / detail
6. merge — Martin Sladecek / detail
7. BaseObservableList implementation in com.sun. package — Martin Sladecek / detail
I got JPA profiles on Win7-high-end machine and I see that the time spent in
javafx.scene.Node.toBack() and javafx.scene.Node.toFront() has been increased
from 3.565 sec to 10.900 sec and from 2.212 sec to 6.322 sec correspondingly
(total measurement time was 30 secs).
=== build h98 ===
+- 10.040 (32%) guimark2.BitmapTest.testIteration()
+- 3.565 (11%) javafx.scene.Node.toBack()
| +- 3.563 (11%) javafx.scene.Parent.impl_toBack(javafx.scene.Node)
| | +- 3.546 (11%) com.sun.javafx.collections.VetoableObservableList.remove(java.lang.Object)
| | | +- 3.546 (11%) com.sun.javafx.collections.ObservableListWrapper.remove(java.lang.Object)
| | | +- 3.442 (11%) com.sun.javafx.collections.ObservableListWrapper.indexOf(java.lang.Object)
| | | | +- 3.442 (11%) java.util.ArrayList.indexOf(java.lang.Object)
| | | +- 0.102 (0%) com.sun.javafx.collections.VetoableObservableList.remove(int)
| | +- 0.013 (0%) com.sun.javafx.collections.VetoableObservableList.add(int, java.lang.Object)
| | +- 0.003 (0%) com.sun.javafx.collections.ObservableListWrapper.get(int)
| +- 0.001 (0%) javafx.scene.Node.getParent()
+- 2.212 (7%) javafx.scene.Node.toFront()
=== build h99 ===
+- 19.831 (64%) guimark2.BitmapTest.testIteration()
+- 10.900 (35%) javafx.scene.Node.toBack()
| +- 10.900 (35%) javafx.scene.Parent.impl_toBack(javafx.scene.Node)
| +- 10.635 (34%) com.sun.javafx.collections.VetoableListDecorator.remove(java.lang.Object)
| | +- 10.536 (34%) java.util.AbstractList.indexOf(java.lang.Object)
| | | +- 3.968 (13%) java.util.AbstractList$Itr.next()
| | | +- 3.257 (10%) java.util.AbstractList$Itr.hasNext()
| | | +- 0.318 (1%) java.lang.Object.equals(java.lang.Object)
| | +- 0.099 (0%) com.sun.javafx.collections.VetoableListDecorator.remove(int)
| +- 0.262 (1%) com.sun.javafx.collections.VetoableListDecorator.add(int, java.lang.Object)
| +- 0.002 (0%) com.sun.javafx.collections.VetoableListDecorator.get(int)
+- 6.322 (20%) javafx.scene.Node.toFront()
Steps to run Guimark2.Bitmap benchmark:
- cd JFX_WS/tests/performance/GUIMark2
- ant
- java -cp "JFX_HOME/rt/lib/jfxrt.jar;./dist/GUIMark2.jar" guimark2.BitmapTest -monsters 18000
change the number of monsters to align to you system capabilities.
You can also find helpful to run with "-Djavafx.animation.fullspeed=true".
Perhaps these changes need to be rolled back as this is big regression in one of most important benchmark.
- relates to
-
JDK-8101739 ObservableListBase
-
- Resolved
-