Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8118741

8.0-graphics-scrum-h99: up to 30% regression in Guimark2.Bitmap

XMLWordPrintable

      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.



            msladecek Martin Sládeček
            epavlova Ekaterina Pavlova
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: