Performance improvement: improve Time Complexity from O(n) to O(1) in DataConversions#get
in some cases
#882
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The implement of
DataConversions#get
(by default) is as follows:which means that you need to traverse all entities when find an entity. When there are lots of elements in the map, the cost of each operation is extremely high.
For example, it will show very clearly when you Import OSM data into PostGIS.
before improvement:
# take several hours or even more baremaps workflow execute --file workflow.json
after improvement:
# take several seconds baremaps workflow execute --file workflow.json
Of course, considering that
org.apache.baremaps.data.collection.DataMap
have different implementations and behaviors, this optimization is not applicable to all subclass.