Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make parameter k in k2 tree completely constant #384

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

tetzank
Copy link

@tetzank tetzank commented Oct 5, 2017

This enables the compiler to optimize for k values which are a power of
two, getting rid of expensive div and imul instructions. Many loops get
unrolled as well.

The private member variable k_k was preventing it as k_k is not constant,
e.g., loading from istream sets it. This is also the only "lost"
functionality, unserialize from a file without knowing the value k
before. All other assignments, like in copy-ctor and operator=(), don't
make any sense as one can only call them with the same type which
implies the same k.

This enables the compiler to optimize for k values which are a power of
two, getting rid of expensive div and imul instructions. Many loops get
unrolled as well.

The private member variable k_k was preventing it as k_k is not constant,
e.g., loading from istream sets it. This is also the only "lost"
functionality, unserialize from a file without knowing the value k
before. All other assignments, like in copy-ctor and operator=(), don't
make any sense as one can only call them with the same type which
implies the same k.
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