Opened 5 years ago

Last modified 4 years ago

#20703 closed defect

GeographicReader.createOrGetWay is slow due to many Arrays.copyOf — at Initial Version

Reported by: simon04 Owned by: Don-vip
Priority: normal Milestone:
Component: Plugin opendata Version:
Keywords: template_report performance profiling intellij yourkit Cc:

Description

What steps will reproduce the problem?

  1. Run profiler while opening https://osmdata.openstreetmap.de/download/simplified-land-polygons-complete-3857.zip

What is the expected result?

What happens instead?

A considerable amount of time is spent in GeographicReader.createOrGetWay is slow due to many Arrays.copyOf


Please provide any additional information below. Attach a screenshot if possible.

java.util.Arrays.copyOf(Object[], int)
org.openstreetmap.josm.tools.Utils.addInArrayCopy(Object[], Object)
org.openstreetmap.josm.data.osm.Way.addNode(Node)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.GeographicReader.createOrGetWay(LineString)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.ShpReader.processGeometryCollection(GeometryCollection)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.ShpReader.parseFeature(Feature, Component)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.ShpReader.parse(File, ProgressMonitor)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.ShpReader.parseDataSet(InputStream, File, AbstractDataSetHandler, ProgressMonitor)
org.openstreetmap.josm.plugins.opendata.core.io.geographic.ShpImporter.parseDataSet(InputStream, ProgressMonitor)
org.openstreetmap.josm.gui.io.importexport.OsmImporter.loadLayer(InputStream, File, String, ProgressMonitor)
org.openstreetmap.josm.gui.io.importexport.OsmImporter.importData(InputStream, File, ProgressMonitor)
org.openstreetmap.josm.plugins.opendata.core.io.AbstractImporter.importData(File, ProgressMonitor)
org.openstreetmap.josm.gui.io.importexport.FileImporter.importDataHandleExceptions(File, ProgressMonitor)
org.openstreetmap.josm.actions.OpenFileAction$OpenFileTask.importData(FileImporter, List)
org.openstreetmap.josm.actions.OpenFileAction$OpenFileTask.realRun()
org.openstreetmap.josm.gui.PleaseWaitRunnable.doRealRun()
org.openstreetmap.josm.gui.PleaseWaitRunnable.run()
java.util.concurrent.Executors$RunnableAdapter.call()
java.util.concurrent.FutureTask.run()
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker)
java.util.concurrent.ThreadPoolExecutor$Worker.run()
java.lang.Thread.run()

Change History (1)

by simon04, 5 years ago

Attachment: flamegraph.png added
Note: See TracTickets for help on using tickets.