Modify

Opened 13 years ago

Closed 12 years ago

#7485 closed defect (fixed)

upload dialog: typing a comment is slow due to high cpu load

Reported by: Cobra Owned by: team
Priority: normal Milestone:
Component: Core Version: latest
Keywords: Cc:

Description

Typing a changeset comment is very slow, during typing a lot of cpu time is consumed.
Something must be triggered in the background.

Version: r5047

Attachments (0)

Change History (7)

comment:1 by akks, 13 years ago

How to reproduce it? (I can not) Does it depend on OS or OSM file?

comment:2 by Cobra, 13 years ago

This happens when editing in densely mapped areas or large areas.
I noticed that for every character typed, a way gets unhighlighted and highlighted again (like it happens when moving the cursor over it). I did not see this every time, but every time I could see it, that lag was present.

I could figure out a way to reproduce this for me:

  • download some densely mapped area
  • change something
  • move the cursor over a complex way (e.g. landuse=residential with many nodes) so it gets highlighted (and notice there is a slight lag doing so)
  • open the upload dialog via shortkey (it will also happen when using the button, but this is unreliable)
  • type fast

Monitoring cpu usage at low intervals (I've got 50ms resolution) helps to see that something is going on.

Java version: 1.6.0_30, Sun Microsystems Inc., Java HotSpot(TM) 64-Bit Server VM, ubuntu 10.10

comment:3 by xeen, 13 years ago

I can get the CPU usage up using the way Cobra described (from 40% to 100%). No idea to what’s the cause, though.

comment:4 by akks, 13 years ago

Each key press in upload dialog cause repaint of layer... I am debugging.

comment:5 by akks, 13 years ago

It is not specific for upload dialog. Keypress in every dialog - add property, F12 preferences, etc. (but not in main window) leads to map repaint.

Thank you for noticing such big waste of CPU!

@team: render is called with following stack (setVisible is called only once):

org.openstreetmap.josm.gui.layer.OsmDataLayer.paint(OsmDataLayer.java:281)
org.openstreetmap.josm.gui.MapView.paintLayer(MapView.java:455)
org.openstreetmap.josm.gui.MapView.paint(MapView.java:534)
javax.swing.JComponent.paintChildren(JComponent.java:887)
javax.swing.JSplitPane.paintChildren(JSplitPane.java:1047)
javax.swing.JComponent.paint(JComponent.java:1063)
javax.swing.JComponent.paintToOffscreen(JComponent.java:5221)
javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1482)
javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1413)
javax.swing.RepaintManager.paint(RepaintManager.java:1206)
javax.swing.JComponent._paintImmediately(JComponent.java:5169)
javax.swing.JComponent.paintImmediately(JComponent.java:4980)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:770)
javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:728)
javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:677)
javax.swing.RepaintManager.access$700(RepaintManager.java:59)
javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1621)
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
java.awt.EventQueue.access$000(EventQueue.java:101)
java.awt.EventQueue$3.run(EventQueue.java:666)
java.awt.EventQueue$3.run(EventQueue.java:664)
java.security.AccessController.doPrivileged(AccessController.java)
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121)
java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
java.security.AccessController.doPrivileged(AccessController.java)
java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
java.awt.Dialog.show(Dialog.java:1072)
java.awt.Component.show(Component.java:1651)
java.awt.Component.setVisible(Component.java:1603)
java.awt.Window.setVisible(Window.java:1013)
java.awt.Dialog.setVisible(Dialog.java:1003)
org.openstreetmap.josm.gui.io.UploadDialog.setVisible(UploadDialog.java:362)
org.openstreetmap.josm.actions.UploadAction.uploadData(UploadAction.java:214)
org.openstreetmap.josm.actions.UploadAction.actionPerformed(UploadAction.java:242)
javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661)
javax.swing.JComponent.processKeyBinding(JComponent.java:2879)
javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:306)
javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:263)
javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2971)
javax.swing.JComponent.processKeyBindings(JComponent.java:2963)
javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
java.awt.Component.processEvent(Component.java:6282)
java.awt.Container.processEvent(Container.java:2229)
...
Last edited 13 years ago by akks (previous) (diff)

comment:6 by Don-vip, 12 years ago

Do you still observe this behaviour ? I cannot reproduce with latest.

in reply to:  6 comment:7 by Cobra, 12 years ago

Resolution: fixed
Status: newclosed

Replying to Don-vip:

I cannot reproduce with latest.

Me neither. Seems like this has been fixed by now.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.