This discussion is archived
1 Reply Latest reply: Feb 4, 2013 12:58 PM by jsmith RSS

Which perfomance improvements will JavaFX 8 deliver to us?

929144 Newbie
Currently Being Moderated
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 Guru
    Currently Being Moderated
    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     

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points