-
Notifications
You must be signed in to change notification settings - Fork 816
Shrink bigchunk data structure #1649
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
342a722
to
5a44db6
Compare
17ae6e5
to
b01ef46
Compare
b07cc22
to
e45e510
Compare
This will save memory and a few CPU cycles. We have to be careful to create the Appender after the chunk is appended to our slice, since it has a pointer to the chunk memory. Signed-off-by: Bryan Boreham <[email protected]>
We can look at the start time of the next one since they don't overlap. This makes the data structure slightly smaller, and speeds up unmarshalling since we don't need to seek through every value. Signed-off-by: Bryan Boreham <[email protected]>
and add a test that covers that case. Signed-off-by: Bryan Boreham <[email protected]>
e45e510
to
124bd82
Compare
Check it works after slice and unmarshal, and check it fails when you seek off the end of the chunk. Signed-off-by: Bryan Boreham <[email protected]> fix test
It is only used to shortcut the case where FindAtOrAfter() is called with a target past the end of the chunk, and this never happens because we have from/through times on each chunk at a higher level. Signed-off-by: Bryan Boreham <[email protected]>
1e64a3b
to
f0ba932
Compare
csmarchbanks
approved these changes
Sep 25, 2019
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Remove pointer indirection on the underlying
XORChunk
, which will save memory and a few CPU cycles.We have to be careful to create the Appender after the chunk is appended to our slice, since it has a pointer to the chunk memory.
And stop storing the end time of every small chunk - we can look at the start time of the next one since they don't overlap. This makes the data structure slightly smaller, and speeds up unmarshalling since we don't need to seek through every value.
We don't need to store the start time either, since it can be fetched from the underlying chunk, but that takes longer.
Estimate of the impact: Suppose chunks are avg 6 hours long then each one has 12 smallchunks and we save 16 bytes per = 192MB per million series, plus Go heap overheads.