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 , 13 years ago
comment:2 by , 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 , 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 , 13 years ago
Each key press in upload dialog cause repaint of layer... I am debugging.
comment:5 by , 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) ...
follow-up: 7 comment:6 by , 12 years ago
Do you still observe this behaviour ? I cannot reproduce with latest.
comment:7 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Replying to Don-vip:
I cannot reproduce with latest.
Me neither. Seems like this has been fixed by now.
How to reproduce it? (I can not) Does it depend on OS or OSM file?