Skip to content

make parameter k in k2 tree completely constant - #384

Open
tetzank wants to merge 1 commit into
simongog:masterfrom
tetzank:constant_k
Open

make parameter k in k2 tree completely constant#384
tetzank wants to merge 1 commit into
simongog:masterfrom
tetzank:constant_k

Conversation

@tetzank

@tetzank tetzank commented Oct 5, 2017

Copy link
Copy Markdown

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