RFR: 8273138: BidirectionalBinding fails to observe changes of invalid properties
Frederic Thevenet
fthevenet at openjdk.java.net
Mon Sep 6 12:35:39 UTC 2021
On Sun, 29 Aug 2021 04:12:22 GMT, Michael Strauß <mstrauss at 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
More information about the openjfx-dev
mailing list