1 Reply Latest reply: Feb 4, 2013 2:58 PM by jsmith RSS

    Which perfomance improvements will JavaFX 8 deliver to us?

    929144
      Hi there,

      my whole company consists already of fans of JavaFX 2 - it's fun to work with it and slowly but steady, the team seems solves on the most annoying bugs. But one thing in the 2.x versions seems to be a problem for us. Even on recommended combinations of hard- and software, performance isn't really predicable yet. Sometimes, our applications perform well on 2-year old hardware while we have issues using high-end desktop components. Generally, i think that there is some potential to improve the performance of JavaFX.

      For example, i read in Jira that the developers where thinking of pre-rendering nodes as bitmaps and cache those to gain some performance wins. I didn't find this discussion again, but i think that this hasn't been implemented yet.

      So what i really would like to know is if there are upcoming performance improvements in JavaFX 8 and if the answer is yes, what will they look like?

      Best regards,

      David

      Edited by: TheJeed on 04.02.2013 02:49
        • 1. Re: Which perfomance improvements will JavaFX 8 deliver to us?
          jsmith
          There are some preliminary performance numbers for JavaFX 8:

          http://fxexperience.com/2012/09/preliminary-performance-numbers-in-javafx-8/
          The fxexperience post also includes descriptions of some of the work to improve performance in JavaFX8.

          Also there is a note on memory consumption:
          I would have to check our performance numbers to be certain, but I believe actually we have also reduced
          the memory usage over the same period, primarily due to making Control a Region and removing one extra
          node for most Controls (for example, a Button is now a Button -> Text, instead of Button -> StackPane -> Text).
          I think some of the major work involves allowing the JavaFX rendering thread and JavaFX application thread to execute concurrently.
          i read in Jira that the developers where thinking of pre-rendering nodes as bitmaps and cache those
          to gain some performance wins.
          I didn't find this discussion again, but i think that this hasn't been implemented yet.
          Perhaps it has. Have you tried out the Node setCache and setCacheHint APIs?
          http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#setCache%28boolean%29
          http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#setCacheHint%28javafx.scene.CacheHint%29

          Additionally, you can manually do this by using node.snapshot and then rendering the resulting image in an ImageView rather than the original node.
          http://docs.oracle.com/javafx/2/api/javafx/scene/Node.html#snapshot%28javafx.scene.SnapshotParameters,%20javafx.scene.image.WritableImage%29


          Depending on the usage situation, the caching APIs can make a huge difference to application performance.
          -------------
          Running a grep for the word performance on the JavaFX 8 issue tracker gave =>
          RT-5130     Mechanism to report FPS of an arbitrary app (app doesn't call PerformanceTracker) in Prism
               
          RT-5475     RT-5474 Optimize picking performance
               
          RT-6475     Need new hints to control how Text node is rendered
               
          RT-8037     Need to complete a temporarily performance fix on filter effects (DropShadow, InnerShadow and SepiaTone)
               
          RT-8243     Memory Leak (sun.awt.geom.CurveLink)
               
          RT-10753     prism-sw: ColorfulCircle bm performance drop in case circle radius is equal 2 or 4 for Inner & Outer Stroke positions
               
          RT-13324     Text needs to support letter spacing
               
          RT-13365     poor performance running "colorful circles"
               
          RT-14065     DirtyRegions: different performance results for equivalent dirty regions
               
          RT-14122     Camera Style Transform
               
          RT-14867     b35: 20% (-2.47 fps) performance regression in TextBox-text100k run with hw pipeline comparing to b34
               
          RT-15566     too big area repainted if the test updates more than 12 checkboxes
               
          RT-15687     TreeItem expand/collapse performance in hardware pipeline is almost 20 fps worse than in j2d pipeline
               
          RT-16725     API to manipulate scrollbar on TableView
               
          RT-16853     TextArea: performance issue
               
          RT-16924     WebNode reload test can't work in sandbox mode
               
          RT-17510     Improve performance of rendering a TRANSPARENT stage on Windows 7
               
          RT-17551     MacOS: Optimize using of lockFocusIfCanDraw
               
          RT-17960     Transparent stage resize flickers on Mac
               
          RT-18067     fx2.1-15 (b01): up to 90% regression in Controls.TextArea-select_all-255x1000 in j2d pipeline
               
          RT-18354     Animation perform down observably when i add the dropdown effect to root
               
          RT-18612     Glass Mac: ClipboardAssistance.actionPerformed()
               
          RT-19106     LCD text blending isn't accounting for over-lapping glyphs.
               
          RT-19271     J2D pipeline does not implement proper handling of the subimage "isolate mask" control
               
          RT-19305     Animation performance may be very unstable on Mac
               
          RT-19605     The fix for RT-19532 results in 65% (317 fps) performance regression in Controls.Buttons-adhoc-mouse-nodes1008-skipAll in fx2.1-controls-scrum-b345 build
               
          RT-20356     PresentingPainter and UploadingPainter disregarding dirty clip rect
               
          RT-20405     Improve Path rendering performance
               
          RT-20475     Allow to select videocard (or choose the best one automatically)
               
          RT-20616     TreeView creates new cells every time root is changed
               
          RT-20978     fx2.2-graphics-scrum-h175: performance regression on Mac (initially 50% but now unknown)
               
          RT-21672     Implement Occlusion Culling
               
          RT-22076     CSS: Treat style class as a bit mask in Selector for better performance on selector matching.
               
          RT-22244     Pisces Renderer shows huge performance win when coded in C
               
          RT-22422     Cannot sign JAR files
               
          RT-22567     Minor tweaks to FX/Swing painting
               
          RT-22913     Implement and enable accelerated compositing to improve WebView rendering performance
               
          RT-23413     FXMLLoader should be able to cache imports and properties between to load() calls
               
          RT-23450     Improve performance of Prism rendering and clipping
               
          RT-23458     Improve ellipses performance
               
          RT-23459     Reduce node count in Controls by allowing a Skin to manipulate the Control's children and layout directly
               
          RT-23463     Implement Region image based caching
               
          RT-23467     Evaluate Native Text Engines
               
          RT-23469     Analyze Layout Performance
               
          RT-23562     Optimize Region by using immutable State, caching on CSS level
               
          RT-23574     Add support for tiled rendering of textures (both for performance and functional reasons)
               
          RT-23582     Update Caspian CSS to use better performing selectors
               
          RT-23588     Investigate using less precise but faster min, pref, max size computations for controls
               
          RT-23616     Avoid processing CSS for VirtualFlow cells that are CSS clean
               
          RT-23621     Check use of HIGHP with es shaders.
               
          RT-23704     Use DirectX 9Ex mechanism to avoid calling cv.save()
               
          RT-23725     Beagleboard: Execute fragment shader on the GPU causes significant drop in performance
               
          RT-23738     fx3.0-graphics-scrum-h45: Webkit synchronization for 3.0 caused -55% performance regression in WebNode.ColorfulShapes-Blur2Circle
               
          RT-23743     Evaluate the performance of computing and uploading individual glyphs one at a time versus in a batch
               
          RT-23746     Consider optimizing libjepg for performance rather than quality (using already existing build flags)
               
          RT-23773     Improve caspian.css to use child selectors where possible, rather than require css engine to perform needless busy-work
               
          RT-23839     Lists,Trees and Tables do not work with wrapped text
               
          RT-23873     Investigate (and improve) ListView / TreeView / TableView performance
               
          RT-23879     Mac: Clicking in a Popup/ContextMenu/ComboBox steals the focus from the primary stage in applet
               
          RT-23905     SQE: Provide JavaFX CSS3 support
               
          RT-23913     SQE: Optional FX Packages
               
          RT-24010     WebNode.GUIMark2-Vector fails with NullPointerException in multithreaded mode
               
          RT-24012     Text performance of the hardware pipeline must be equal or better than the software pipeline
               
          RT-24013     Multi-Core scalability
               
          RT-24017     3.0-controls-scrum-58: 100% regression in NodeMemory.TreeItem and 96% in Controls.TreeView-Expand
               
          RT-24018     3.0-controls-scrum-60: Controls.ListView-Keyboard and Controls.TableView-Keyboard benchmarks are broken
               
          RT-24143     Ant task fx:deploy expectes all JARs to have a MANIFEST.MF and fails with NPE if at least one doesn't
               
          RT-24148     Private controls Weak* classes should clean up in more situations
               
          RT-24298     3.0-graphics-scrum-h142: memory usage of ColorfulShapes.Blur2Circle-Transparent has been increased by 625% (246,890.67 kb)
               
          RT-24320     WebView draws entire back buffer on screen upon every repaint
               
          RT-24437     X11Pixels and LensPixels are ill-implemented wrt managing the native object
               
          RT-24480     Use FilteredList for Parent.unmodifiableManagedChildren
               
          RT-24557     ImagePattern is slow on embedded systems
               
          RT-24582     High frequency refresh and Heavy but low priority updates in the same app (multithreading render, multiinstance...)
               
          RT-24587     Changing a single child of FlowLayout is slower than changing all children
               
          RT-24624     prism-sw pipeline is up to 90% worse than j2d pipeline
               
          RT-24741     WebView is not using accelerated compositing for http://javaweb.sfbay.sun.com/~epavlova/Performance/JavaFX2/mexsantos opacity transitions
               
          RT-24965     8.0-graphics-scrum-h82: Controls.TableView-XmasTree and DirtyArea performance regressions caused by RT-23725 fix.
               
          RT-24966     8.0-graphics-scrum-h99: up to 30% regression in Guimark2.Bitmap
               
          RT-24992     8.0-controls-scrum-h51: Controls.CheckBox and Controls.RadioButton benchmarks are broken
               
          RT-24997     8.0-controls-scrum-h44: up to 35% regression in Controls.TableView and Controls.Buttons benchmarks
               
          RT-25036     8.0-h26-b56: Controls.TableView-XmasTree benchmark crashes with SIGSEGV on MacOS in sw pipeline
               
          RT-25078     Mac: dirChooser.showDialog() returns immediately "null" but somehow remains open and appears to work (...when being executed from a Button onAction Eventhandler in new Stage)
               
          RT-25118     8.0-controls-scrum-h51: -23% performance regression in Controls.TreeView-Expand.adhoc-items1000-wide benchmark
               
          RT-25120     8.0-graphics-scrum-h99: up to -24% performance regression in Controls.ListView and Controls.TableView
               
          RT-25166     Path updates in a ScrollPane where content has a Scale transform are 100 times slower
               
          RT-25233     Javafx applet with preloader crashes under Windows / Java7u7 / Chrome
               
          RT-25350     poor animation performance on PathTransition when part of the Stage sits outside of desktop screen
               
          RT-25382     8.0-h38-b58: up to 30% performance regression in Image rendering in sw pipeline
               
          RT-25403     8.0-h38-b58: 67% (-21.7 fps) performance regression in Charts.Bubble in hw pipeline on MacOS-Low end machines
               
          RT-25486     Debian policy requirement for 'Installed-Size' not set -- users get warning when installing: NetBeans built JavaFX .deb package for Ubuntu
               
          RT-25684     GridPane.layoutChildren() hangs when wrapText is true
               
          RT-25685     GridPane.layoutChildren() hangs when wrapText is setup in CSS style class
               
          RT-25801     8.0-controls-scrum-h81: 25% performance regression in Controls.RadioButton on mac-low end machine
               
          RT-25864     New "shared textures" do not share pixel update flags as well as they should
               
          RT-25919     8.0-graphics-scrum-h242: 48% (16.70 fps) performance regression in GUIMark2.Bitmap on MacOS
               
          RT-26024     Scene Builder hangs when adding column
               
          RT-26113     8.0-graphics-scrum-h278: disabled accessibility feature triggers dependency on uiautomationcore.dll
               
          RT-26140     Node Orientation - API issue: Should effective orientation be a property?
               
          RT-26221     8.0-graphics-scrum-h276: 33% regression in NodeMemory.TableColumn-rendering-on benchmark
               
          RT-26438     8.0-graphics-scrum-h342: up to 30% of memory usage increase in bunch of performance benchmarks
               
          RT-26537     8.0-graphics-scrum-349: deadloack in WebNode.GUIMark2-Bitmap benchmark
               
          RT-26702     Poor DisplacementMap effect performance on Mac
               
          RT-26716     Performance of scrolling TreeView tail is much more slowly when scrolling TreeView head
               
          RT-26894     String rendering is less performant than java2D one
               
          RT-26909     Regions are being cached even when extremely tall
               
          RT-26999     8.0-controls-scrum-h122: up to 20% regression in some Controls.TableView benchmarks
               
          RT-27073     8.0-graphics-scrum-h458: more than 50% regression in Controls.TextField benchmark
               
          RT-27079     8.0-graphics-scrum-h449: RT-25055 caused up to 80% regression in Charts.Bubble benchmark
               
          RT-27111     8.0-controls-scrum-h138: up to 30% regression in Controls.TreeViewExpand benchmarks
               
          RT-27143     8.0-graphics-scrum-h471: TableView-Keyboard fails with NullPointerException
               
          RT-27508     8.0-h96-b68: 68% regression in SpiralText in hw pipeline caused by enabling DirectX 9Ex
               
          RT-27667     [TreeTableView] Multiple cell selection issue.
               
          RT-27982     Mac: 8.0-graphics-scrum-h595: JavaFX crashes on MacOS
               
          RT-27985     8.0-graphics-scrum-h595: 42% performance regression in Guimark2.BitmapCanvas on Windows-Mid-Range machine
               
          RT-28064     A new Scene accumulates all PointLight's from previous Scene's