| | 20 | |
| | 21 | Most of the performance enhancements come from: |
| | 22 | 1. Avoiding various `ArrayList#grow` calls |
| | 23 | * A lot is from passing around a `ByteArrayOutputStream |
| | 24 | 2. Caching bboxes in VectorNodes (I'm kind of ambivalent on this -- I don't want to keep the bboxes around, but a significant number of allocations came from `QuadBuckets#search`, of which a ''significant'' number of allocations came from `VectorNode#getBBox`, ~1,400,000,000 bytes, or ~20%) |
| | 25 | 3. Caching nodes in a Map<ILatLon, VectorNode> map to avoid calling `QuadBuckets#search` when possible |
| | 26 | |
| | 27 | The patch additionally fixes a bug with `VectorRelation#setMembers` and adds a default method `putAll` for `Tagged`. |