{"id":20046334,"url":"https://github.com/tinydancer-io/merkle-bench","last_synced_at":"2026-05-11T08:32:37.660Z","repository":{"id":185109579,"uuid":"671865457","full_name":"tinydancer-io/merkle-bench","owner":"tinydancer-io","description":"This is a benchmark comparing merkle tree construction for receipts in Solana's consensus","archived":false,"fork":false,"pushed_at":"2023-10-05T09:29:54.000Z","size":358,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-12T20:11:56.009Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinydancer-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-28T10:15:19.000Z","updated_at":"2023-08-19T11:09:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"bdc735e2-3172-4432-94b4-31eaed8c2af5","html_url":"https://github.com/tinydancer-io/merkle-bench","commit_stats":null,"previous_names":["tinydancer-io/merkle-bench"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinydancer-io%2Fmerkle-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinydancer-io%2Fmerkle-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinydancer-io%2Fmerkle-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinydancer-io%2Fmerkle-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinydancer-io","download_url":"https://codeload.github.com/tinydancer-io/merkle-bench/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241476435,"owners_count":19968916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T11:23:07.974Z","updated_at":"2026-05-11T08:32:37.621Z","avatar_url":"https://github.com/tinydancer-io.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Benchmarking Merkle Tree Construction for Receipts\n\nThis is a benchmark comparing merkle tree construction for receipts(Signature + Status). We are using two libraries for the comparison.\n\n- [Solana-Merkle-Tree](https://crates.io/crates/solana-merkle-tree)\n- [Firedancer bmtree32](https://github.com/firedancer-io/firedancer/tree/main/src/ballet/bmtree)\n\n**Note: bmtree32 is written in pure C. This benchmark currently uses FFI therefore there is a certain performance penalty(due to lack of inlining and optimisation)**\n\nSystem Info:\n```\nRust - rustc 1.70.0 (90c541806 2023-05-31)\nGCC - gcc (Ubuntu 12.2.0-17ubuntu1) 12.2.0\nClang - Ubuntu clang version 15.0.7\nLinux Kernal - 6.2.0-20-generic\nDistro - Ubuntu 23.04\n```\n\n### Flamegraph Setup\nRefer [these](https://github.com/flamegraph-rs/flamegraph#installation) steps to setup flamegraph generation\n\nIf you face permission issues while using linux perf then use\n`sudo sysctl -w kernel.perf_event_paranoid=2`\n\nThen run the following command to generate flamegraph.\n`CARGO_PROFILE_BENCH_DEBUG=true cargo flamegraph --bench merkle_bench`\n\n## Results\n\nMachine - `Intel i5 12400 w/ 16G Ram`\n\n![Result-1](./r1.png)\n\n\n![Flamegraph-1](./flamegraph.svg)\n\nMachine - `m3.large.x86`\n![image](https://github.com/tinydancer-io/merkle-bench/assets/32778608/5d544ecf-49a1-4be0-b50f-cabdbeee71f7)\n\n![Flamegraph-2](./amdflame.svg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinydancer-io%2Fmerkle-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinydancer-io%2Fmerkle-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinydancer-io%2Fmerkle-bench/lists"}