Opened 4 years ago
Last modified 4 years ago
#21950 closed defect
[PATCH] Significantly reduce freeze when deleting a node with the relation editor open — at Initial Version
Reported by: | taylor.smock | Owned by: | team |
---|---|---|---|
Priority: | normal | Milestone: | 22.03 |
Component: | Core | Version: | |
Keywords: | performance | Cc: |
Description
From comment:36:ticket:21825:
Measurements (async profiler) for attachment:21825.avoid_loop_MemberTableModel_wayNodesChanged.patch:ticket:21825
Original code (no patches, jar downloaded from website, 30s for update on node delete, profiling was ~36s long, EDT blocked for ~30s):
- CPU
- EDT: 69.31% of all
- MemberTableModel#wayNodesChanged: 65.89% of all, 95% of EDT
- G1: 21.09% of all
- EDT: 69.31% of all
- Memory
- EDT: 80.75% of all
- MemberTableModel#wayNodesChanged: 66.93% of all, 82% of EDT
- MapView painting: 13.07% of all, 16.18% of EDT
- AutoSaveTask: 19.16% of all
- EDT: 80.75% of all
New code (~6s for update on node delete -- most of time is from moving mouse to start/stop profiling, also has validator changes, EDT blocked for <1s at any time):
- CPU
- EDT: 16.99% of all
- MemberTableModel#wayNodesChanged: 1.98% of all, 11.65% of EDT
- G1: 6.31% of all
- Validation: 68.41% of all
- EDT: 16.99% of all
- Memory
- EDT: 97.76% of all
- MemberTableModel#wayNodesChanged: 6.04% of all, 6.17% of EDT
- MapView painting: 79.59% of all, 81.41% of EDT
- Validation: 1.48% of all
- EDT: 97.76% of all
No listeners (at least in core JOSM) actually check for which column is modified. Or even what changed in the table.
Standalone patch: Avoid loop in MemberTableModel#wayNodesChanged. This decreases UI freeze from ~20s to <1s for Lake Huron. (Same as attachment:21825.avoid_loop_MemberTableModel_wayNodesChanged.patch:ticket:21825 )