Situation
I created a particle system with JavaFX using the following technique:
Each particle is an ImageView that contains an image with a radial gradient:

The particle processing loop is an AnimationTimer in which the particle list is processed using the list stream () method. parallel (), it actually gives a boost to the whole system. Something like that:
loop = new AnimationTimer() {
@Override
public void handle(long now) {
addParticle();
allParticles.stream().parallel().forEach(Particle::applyForceGravity);
allParticles.stream().parallel().forEach(Particle::move);
allParticles.forEach(Particle::display);
removeDeadParticles();
}
};
Particle color changes through ColorAdjust during its life cycle. I used the colors of fire for testing, something like this, which contains 1700 particles:

What I learned:
- Not using parallel () function slower
- Using Circle with transparency is slower than using ImageView
- Using blend mode is very slow
- PixelWriter . : ColorAdjust ( d3d )? JavaFX.
JavaFX ( Node, Thread ..) ?
, - .
!
: , , , . , coloradjust, .
, , .