Fix Issue#83, limit number of segments for high-dimensional key space#84
Fix Issue#83, limit number of segments for high-dimensional key space#84rkrenzler wants to merge 1 commit into
Conversation
…l key space Reduce the number of segments returned by choose_checkpoints. Note, even if each key dimension is split only once, a high number of key dimensions can still result in an excessive number of segments. This significantly lowers the performance of reladiff. For example, 20 key columns may lead to 1.048.576 segments.
|
Can you explain the intuition behind the new I understand the need to limit the number of segments, but I'm asking about the specific method. |
|
Remark: k splits leads to k+1 segments. In the new implementation I do not try to split all the dimensions from the very beginning. I start splitting dimensions one-by-one from the beginning by the number estimated by Example: Split 3 dimensional keys [1,1,1] [3,3,3] into maximally two segments in the worst-case scenario. Old implementation: It splits every dimension by 1 and creates a mesh [1,2,3], [1,2,3], [1,2,3] which splits the key space into 8 segments. New implementation: |
Reduce the number of segments returned by choose_checkpoints. Note, even if each key dimension is split only once, a high number of key dimensions can still result in an excessive number of segments. This significantly lowers the performance of reladiff. For example, 20 key columns may lead to 1.048.576 segments.