{"id":20874650,"url":"https://github.com/neomutt/contrib-hcache-benchmark","last_synced_at":"2026-04-29T04:02:25.012Z","repository":{"id":72106825,"uuid":"502736585","full_name":"neomutt/contrib-hcache-benchmark","owner":"neomutt","description":"Script to test the speed of the header cache","archived":false,"fork":false,"pushed_at":"2022-06-12T21:55:31.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-19T09:09:47.462Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/neomutt.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":"2022-06-12T21:55:05.000Z","updated_at":"2023-02-27T23:03:20.000Z","dependencies_parsed_at":"2023-03-10T20:30:16.634Z","dependency_job_id":null,"html_url":"https://github.com/neomutt/contrib-hcache-benchmark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Fcontrib-hcache-benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Fcontrib-hcache-benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Fcontrib-hcache-benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Fcontrib-hcache-benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neomutt","download_url":"https://codeload.github.com/neomutt/contrib-hcache-benchmark/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243249012,"owners_count":20260768,"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-18T06:35:29.621Z","updated_at":"2025-12-28T07:03:38.951Z","avatar_url":"https://github.com/neomutt.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NeoMutt's hcache benchmark\n\n## Introduction\n\nThe shell script and the configuration file in this directory can be used to\nbenchmark the NeoMutt hcache backends.\n\n## Preparation\n\nIn order to run the benchmark, you must have a directory in maildir format at\nhand. NeoMutt will load messages from there and populate the header cache with\nthem. Please note that you'll need a reasonable large number of messages -\nover 50,000 - to see anything interesting.\n\n## Running the benchmark\n\nThe script accepts the following arguments\n\n```\n-e Path to the neomutt executable\n-m Path to the maildir directory\n-t Number of times to repeat the test\n-b List of backends to test\n```\n\nExample: `./neomutt-hcache-bench.sh -e /usr/local/bin/neomutt -m ../maildir -t 10 -b \"lmdb qdbm bdb kyotocabinet\"`\n\n## Operation\n\nThe benchmark works by instructing NeoMutt to use the backends specified with\n`-b` one by one and to load the messages from the maildir specified with `-m`.\nNeoMutt is launched twice with the same configuration. The first time, no header\ncache storage exists, so NeoMutt populates it. The second time, the previously\npopulated header cache storage is used to reload the headers. The times taken to\nexecute these two operations are kept track of independently.\n\nAt the end, a summary with the average times is provided.\n\n## Sample output\n\n```sh\n$ sh neomutt-hcache-bench.sh -m ~/maildir -e ../../neomutt -t 10 -b \"bdb gdbm qdbm lmdb kyotocabinet tokyocabinet\"\nRunning in /tmp/tmp.TFHQ8iPy\n 1 - populating - bdb\n 1 - reloading  - bdb\n 1 - populating - gdbm\n 1 - reloading  - gdbm\n 1 - populating - qdbm\n 1 - reloading  - qdbm\n 1 - populating - lmdb\n 1 - reloading  - lmdb\n 1 - populating - kyotocabinet\n 1 - reloading  - kyotocabinet\n 1 - populating - tokyocabinet\n 1 - reloading  - tokyocabinet\n 2 - populating - bdb\n 2 - reloading  - bdb\n 2 - populating - gdbm\n ....\n10 - populating - kyotocabinet\n10 - reloading  - kyotocabinet\n10 - populating - tokyocabinet\n10 - reloading  - tokyocabinet\n\n*** populate\nbdb            8.814 real 4.227 user 2.667 sys\ngdbm           24.938 real 4.082 user 3.852 sys\nqdbm           9.806 real 5.201 user 2.480 sys\nlmdb           7.637 real 3.589 user 2.385 sys\nkyotocabinet   11.493 real 6.456 user 2.537 sys\ntokyocabinet   9.521 real 5.104 user 2.356 sys\n\n*** reload\nbdb            2.101 real 1.027 user .614 sys\ngdbm           3.474 real .885 user .584 sys\nqdbm           2.170 real 1.142 user .552 sys\nlmdb           1.694 real .845 user .478 sys\nkyotocabinet   2.729 real 1.541 user .591 sys\ntokyocabinet   2.526 real 1.395 user .581 sys\n```\n\n## Notes\n\nThe benchmark uses a temporary directory for the log files and the header cache\nstorage files. These are left available for inspection. This also means that\n*you* must take care of removing the temporary directory once you are done.\n\nThe path to the temporary directory is printed on standard output when the\nbenchmark starts, e.g., `Running in /tmp/tmp.WjSFtdPf`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Fcontrib-hcache-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneomutt%2Fcontrib-hcache-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Fcontrib-hcache-benchmark/lists"}