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

Improve SegmentReader API #5

Merged
merged 10 commits into from Mar 14, 2023
Merged

Improve SegmentReader API #5

merged 10 commits into from Mar 14, 2023

Conversation

fgrosse
Copy link
Owner

@fgrosse fgrosse commented Mar 14, 2023

This pull request improves performance by enabling callers to skip decoding WAL entries if they only want to seek through the WAL up to a specific offset. The changeset contains both new benchmarks as well as refactoring of the package structure to introduce a new waltest package and a folder for testdata which is used in benchmarks.

Not having to decode the WAL entries has a huge impact on performance
when scanning through WAL segments:

  $ benchcmp benchmark_old.txt benchmark_new.txt
  benchcmp is deprecated in favor of benchstat: https://pkg.go.dev/golang.org/x/perf/cmd/benchstat
  benchmark                    old ns/op     new ns/op     delta
  BenchmarkSegmentReader-8     899279        215627        -76.02%

  benchmark                    old allocs     new allocs     delta
  BenchmarkSegmentReader-8     12009          5009           -58.29%

  benchmark                    old bytes     new bytes     delta
  BenchmarkSegmentReader-8     148851        84836         -43.01%
@fgrosse fgrosse linked an issue Mar 14, 2023 that may be closed by this pull request
@fgrosse fgrosse force-pushed the segment-reader-next branch 3 times, most recently from e3b1b46 to 6c6265a Compare March 14, 2023 13:02
Copy link
Owner Author

@fgrosse fgrosse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@fgrosse fgrosse merged commit 9fef279 into main Mar 14, 2023
@fgrosse fgrosse deleted the segment-reader-next branch March 14, 2023 13:10
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.

Return offset from SegmentReader.Next()
1 participant