Comments (3)
@dlemmermann, as always, thanks a lot for your suggestion! I will look into and benchmark this.
Thanks also for your interest and your endorsement.
from chart-fx.
Hi again,
I gave it a shot and while I hoped it would -- it does not seem to improve the plotting performance. See the attached performance plot (25 Hz update rate) and committed concept branch for details (will leave this branch for a while for others to explore further). It seems that the remaining 10% load especially for plotting only a few data points seems to be within JavaFX itself.
N.B. I changed the GraphicsContext's .save()
and .restore()
operations to the recursive variant as suggested above in -- what I initially believed was the main "hot spot" -- AbstractAxes
as well as the various performance-critical renderers (see committed branch).
I kept them though at least in the renderer' render(GraphicsContext gc, ...)
routines to ensure that potential context forward/unrolling bugs are not propagated beyond the renderer boundaries and because these operations would be executed only once per repaint.
IMHO Swing used to be a bit faster in that domain because it could push those precious bytes with a whole lot less unnecessary double->float->int conversions before these bytes arrive in the GPU engine.
If I'd had the time, I'd compare and rewrite the GraphicsContext of JavaFX to the one used in Swing and also tune some of the other operations (but that would IMO involve some JavaFX GC API changes).
Thanks again @dlemmermann for diving deep into our codebase. It's always appreciated to get some expert Java veteran input on things.
from chart-fx.
closing this. GraphicsContext save/restore calls did not appear to be hot-spots. Kept them for readability and keeping GraphicsContext changes local for the given code segment.
from chart-fx.
Related Issues (20)
- Noob developer
- Change CachedDataPoints access modifier to public
- Notes for future work past 11.3 HOT 1
- Eclipse cannot handle 11.3.0 for some reason HOT 19
- Several questions about axis HOT 2
- The Zoomer plugin has some problems when using the mouse wheel HOT 2
- Fix usage of `renderer.getAxes` in `DataPointToolTip` and other plugins
- com.sun.javafx.application.PlatformImpl startup WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @...' HOT 2
- (1) real time candlestick Chart with lines and points together (2) show at least two candlesticks together HOT 1
- Am I in the correct developer mode? developer mode for chartfx-chart/: An exception occurred while executing the Java class. Exception in Application start method HOT 1
- setTickUnit seems to be invalid and does not show the expected effect HOT 1
- ErrorDataSetRenderer with LineStyle.HISTOGRAM draws extra lines HOT 3
- Please update documentation to included dependency for the samples HOT 6
- Inquiry about Documentation HOT 1
- Broken handling of Y error values by multi-value LimitedIndexedTreeDataSet.set HOT 1
- axis auto range and axis tick label issue after `setLogAxis=true` HOT 2
- Building with Java 21 HOT 5
- Building samples as standalone fails HOT 1
- Panning mouse filter cannot be changed in the `Zoomer` plugin HOT 1
- CachedDaemonThreadFactory COMMON_POOL HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from chart-fx.