On Sun, 29 Aug 2021 04:12:22 GMT, Michael Strauß <mstra...@openjdk.org> wrote:
> This PR fixes a bug that was introduced in #454. > > Since this fix might impact the performance considerations in the original > PR, I ran a performance benchmark against the previous `ChangeListener`-based > implementation, which still shows better performance for the new > implementation: > > > @State(Scope.Benchmark) > public class BindingBenchmark { > DoubleProperty property1 = new SimpleDoubleProperty(); > DoubleProperty property2 = new SimpleDoubleProperty(); > > public BindingBenchmark() { > property2.bindBidirectional(property1); > } > > @Benchmark > public void benchmark() { > for (int i = 0; i < 10000000; ++i) { > property1.set((i % 2 == 0) ? 12345.0 : 54321.0); > } > } > } > > > | Benchmark | Mode | Cnt | Score | Error | Units | > |-----------|------|-----|-------|-------|--------| > | ChangeListener | thrpt | 5 | 7.463 | 0.040 | ops/s | > | InvalidationListener (fixed) | thrpt | 5 | 15.095 | 0.092 | ops/s | I see. This is unfortunate though, as this will definitely break some applications in ways potentially difficult to diagnose. Maybe this won't be too bad if the window until 17.0.1 is small, but still, I'm afraid third party developers not following these discussions might be in for some head scratching. ------------- PR: https://git.openjdk.java.net/jfx/pull/614