Skip to content

Conversation

aaronc
Copy link
Member

@aaronc aaronc commented Aug 28, 2025

A complete reworking of the existing benchmarking code that uses the same data generation algorithm.

To generate data run cmd/gen_changesets from bench/. For example to generate 100 versions of data in the testdata/ dir (using the default "small" profile):

go run ./cmd/gen_changesets/ testdata --versions 100

The test changeset data for each version will be in an individual protobuf file in the testdata/ directory which can be streamed incrementally into the test runner. Given the size of data we are trying to generate (40M initial entries with the "osmosis" profile), it was necessary to both generate and apply the data using streaming.

Benchmark runners for iavl-v1, iavl-v2 and memiavl have been updated to use a unified benchmark runner so that the benchmarks and results are as similar as possible for each tree. (iavl-v0 and store-v2 code has not been updated).

To run benchmarks for a tree, cd into that directory and run:

go run . bench --changeset-dir {generated-changeset-dir} --db-dir {dir-for-db-files}

@aaronc aaronc marked this pull request as ready for review August 28, 2025 22:27
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