support/compressxdr: Fix compressxdr performance #5494
Merged
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.
PR Checklist
PR Structure
otherwise).
services/friendbot
, orall
ordoc
if the changes are broad or impact manypackages.
Thoroughness
.md
files, etc... affected by this change). Take a look in the
docs
folder for a given service,like this one.
Release planning
CHANGELOG.md
within the component folder structure. For example, if I changed horizon, then I updated (services/horizon/CHANGELOG.md. I add a new line item describing the change and reference to this PR. If I don't update a CHANGELOG, I acknowledge this PR's change may not be mentioned in future release notes.semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.
What
In the initial ledger exporter prototype I suggested using github.com/stellar/go-xdr/xdr3 to encode / decode XDR blobs. This was actually a mistake because we should be using the optimized encode / decode functions in github.com/stellar/go/xdr. This commit corrects that mistake and consequently improves decode performance by 6-7x and encode performance by 4-5x.
Before:
BenchmarkDecodeLedgerCloseMetaBatch
BenchmarkDecodeLedgerCloseMetaBatch-10 100 11628515 ns/op
PASS
After:
BenchmarkDecodeLedgerCloseMetaBatch
BenchmarkDecodeLedgerCloseMetaBatch-10 658 1821993 ns/op
PASS
Before:
BenchmarkEncodeLedgerCloseMetaBatch
BenchmarkEncodeLedgerCloseMetaBatch-10 133 8959840 ns/op
PASS
After:
BenchmarkEncodeLedgerCloseMetaBatch
BenchmarkEncodeLedgerCloseMetaBatch-10 573 2104398 ns/op
PASS