- Added new multimap:
PhTreeMultiMapF2
.
Release 2.5.0
- Added convenience API for multi-map:
PhTreeMultiMapF
. This API emulates a PH-Tree that (unlike normal PH-Trees) support multiple entries for any coordinate. This is enabled by storing a unique identifier in an additional dimension. For performance reasons it is recommended to use small absolute values for IDs, such as 16bit or 32bit integers.
Release 2.4.0
- Added missing public API for filtered queries:
PhTree.query(min, max, filter)
Release 2.3.0
- Added missing compute functions for
PhTreeF
,PhTreeSolid
andPhTreeSolidF
- Fixed bug in
compute()
/computeIfPresent()
in V13
Release 2.2.0
- Added Java 8 Map API to V13 and V16 (
putIfAbsent()
,compute()
, ...). Onlycompute()
andcomputeIfPresent()
are currently optimized. - Several minor speed improvements to V13 and V16, including reduced garbage creation.
Released version 2.1.0 of the PH-Tree.
- Avoid 'synchronized' object pooling. Object pooling in V13, v16 and v16HD have been modified to be non-
synchronized
, instead each instance of the PhTree has its own pool. A a result, running several PhTree instances in parallel will slightly increase memory usage (due to several pools allocated), butt will completely avoid contention caused bysynchronized
pools. Asynchronized
version of V13 is still available asv13SynchedPool
.
Released version 2.0.2 of the PH-Tree. This release contains a minor fix and documentation updates.
Released version 2.0.1 of the PH-Tree. This release contains some minor fixes and documentation updates.
Released version 2.0.0 of the PH-Tree (partial reimplementation). There are three new versions:
- v13 has a new much better kNN query then previous versions, but has otherwise only small improvements over the previous v11. v13 is the best version for less than 8 dimensions.
- v16 and v16HD are reimplementations of the PH-Tree. The basic concept is still the same, except that the internal
structure of nodes is now a B+Tree instead of the previous AHC/LHC nodes. Advantages:
- Much simpler code.
- Insertion/removal performance scales much better with dimensionality.
- The v16HD version supports theoretically up to 2^31 dimensions.
- Downside: memory requirements have increased, they are now on par with R*Trees or kD-trees.
- Internal B+Tree structure (with configurable page sizes) makes it more suitable for disk based storage.
- API Contract Change: The PH-Tree now stores keys (long[]/double[]) internally. Modifying them after storing them in the tree will make the tree invalid.
- The
PhTree
factory class will automatically choose one of v13, v16 and v16HD, depending on the number of dimensions.
Released version 0.3.4 of the PH-tree
- Bugfix: kNN distance returned '0' for PhTreeF.
Released version 0.3.3 of the PH-tree
- Some bugfixes.
- Updated documentation.
Released version 0.3.2 of the PH-tree
- Added support for kNN nearest neighbor queries for rectangle data.
- More API updates (javadoc and added missing methods).
Released version 0.3.1 of the PH-tree
- Unified object pool configuration
- javadoc to compile with -Xlint:all
Released version 0.3.0 of the PH-tree (internal version: v11). Features (partly available before, but not in the original version):
- Major code refactoring
- Restructuring of node data, subnodes and data are now in the same collection. This is faster and simplifies the code but requires slightly more memory
- AHC vs LHC policy has changed to prefer faster (but larger) AHC nodes at the cost of memory. Set
Node.AHC_LHC_BIAS = 1.0
for lowest memory requirements. - Dedicated reinsertion / update methods
- Nearest neighbor queries (reimplemented since v8)
- Support for rectangle data
- Reduced garbage collection load: query iterators are reusable, returned entries are reusable, objects are pooled internally
- Performance improvements and bug fixes
- Available as maven artifact