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
  • 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

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
  • 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

No listeners (at least in core JOSM) actually check for which column is modified. Or even what changed in the table.

Change History (1)

by taylor.smock, 4 years ago

Attachment: 21950.patch added

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 )

Note: See TracTickets for help on using tickets.