Skip to content

Conversation

tzaeschke
Copy link
Owner

@tzaeschke tzaeschke commented Mar 9, 2022

Remove the postfix and infix fields from Node and instead have only a single infix in Entry. See issue #11.
The idea is that we can check whether a child node should be traversed (checking with key and infix/posfix) without having to access the node (=pointer indirection). I.e. we can avoid loading nodes that we never need.
This is expected to be useful for all types of access: insert, update, erase, query, kNN. This mostly worked out except that queries showed no improvement and other operations improved mostly for low dimensionality (e.g. 3D).
Improvements summary of various benchmarks:

  • erase_d: 10-15%
  • update_d: 10-15%
  • insert_d: 5-10% (3D) 0-5% (6D) 0%(10D-20D)
  • query_d: 0-5%
  • knn_d: 5-15%
  • query_box_d: 0-5%
  • insert_box_d: 0%

All results: remove-postlen.txt

@tzaeschke tzaeschke self-assigned this Mar 9, 2022
@tzaeschke tzaeschke force-pushed the fix/issue-11-postfix-infix branch from a2b3974 to d9ad73b Compare March 9, 2022 17:42
@tzaeschke tzaeschke merged commit 5d76f97 into master Mar 9, 2022
@tzaeschke tzaeschke mentioned this pull request Mar 9, 2022
@tzaeschke tzaeschke deleted the fix/issue-11-postfix-infix branch April 18, 2022 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant