{"id":13595041,"url":"https://github.com/nvzqz/divan","last_synced_at":"2025-05-13T17:12:41.128Z","repository":{"id":177489199,"uuid":"660472817","full_name":"nvzqz/divan","owner":"nvzqz","description":"Fast and simple benchmarking for Rust projects","archived":false,"fork":false,"pushed_at":"2025-04-17T04:02:42.000Z","size":860,"stargazers_count":1115,"open_issues_count":35,"forks_count":33,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-24T03:49:25.309Z","etag":null,"topics":["benchmark","fast","performance","rust","simple"],"latest_commit_sha":null,"homepage":"https://nikolaivazquez.com/blog/divan/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nvzqz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","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,"zenodo":null},"funding":{"github":["nvzqz"],"custom":["https://paypal.me/nvzqz"]}},"created_at":"2023-06-30T05:01:57.000Z","updated_at":"2025-04-22T04:39:31.000Z","dependencies_parsed_at":"2023-12-05T23:24:07.120Z","dependency_job_id":"7622865c-6c1a-4831-adb6-a53625628c93","html_url":"https://github.com/nvzqz/divan","commit_stats":{"total_commits":440,"total_committers":6,"mean_commits":73.33333333333333,"dds":"0.020454545454545503","last_synced_commit":"cc31e540a2cbb97112bcf3fc2b9ec46a984d33d2"},"previous_names":["nvzqz/divan"],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvzqz%2Fdivan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvzqz%2Fdivan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvzqz%2Fdivan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nvzqz%2Fdivan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nvzqz","download_url":"https://codeload.github.com/nvzqz/divan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990482,"owners_count":21995775,"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":["benchmark","fast","performance","rust","simple"],"created_at":"2024-08-01T16:01:42.869Z","updated_at":"2025-05-13T17:12:36.117Z","avatar_url":"https://github.com/nvzqz.png","language":"Rust","funding_links":["https://github.com/sponsors/nvzqz","https://paypal.me/nvzqz"],"categories":["Rust","Development tools"],"sub_categories":["Profiling"],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eDivan\u003c/h1\u003e\n    \u003ca href=\"https://docs.rs/divan\"\u003e\n        \u003cimg src=\"https://img.shields.io/crates/v/divan.svg?label=docs\u0026color=blue\u0026logo=rust\" alt=\"docs.rs badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/divan\"\u003e\n        \u003cimg src=\"https://img.shields.io/crates/d/divan.svg\" alt=\"Downloads badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/nvzqz/divan\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/stars/nvzqz/divan.svg?style=flat\u0026color=black\" alt=\"GitHub stars badge\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/nvzqz/divan/actions/workflows/ci.yml\"\u003e\n        \u003cimg src=\"https://github.com/nvzqz/divan/actions/workflows/ci.yml/badge.svg\" alt=\"CI build status badge\"\u003e\n    \u003c/a\u003e\n    \u003cp\u003e\n        \u003cstrong\u003eComfy bench\u003c/strong\u003emarking for Rust projects, brought to you by\n        \u003ca href=\"https://nikolaivazquez.com\"\u003eNikolai Vazquez\u003c/a\u003e.\n    \u003c/p\u003e\n\u003c/div\u003e\n\n## Sponsor\n\nIf you or your company find Divan valuable, consider [sponsoring on\nGitHub](https://github.com/sponsors/nvzqz) or [donating via\nPayPal](https://paypal.me/nvzqz). Sponsorships help me progress on what's\npossible with benchmarking in Rust.\n\n## Guide\n\nA guide is being worked on. In the meantime, see:\n- [Announcement post](https://nikolaivazquez.com/blog/divan/)\n- [\"Proving Performance\" FOSDEM talk](https://youtu.be/P87C4jNakGs)\n\n## Getting Started\n\nDivan `0.1.21` requires Rust `1.80.0` or later.\n\n1. Add the following to your project's [`Cargo.toml`](https://doc.rust-lang.org/cargo/reference/manifest.html):\n\n    ```toml\n    [dev-dependencies]\n    divan = \"0.1.21\"\n\n    [[bench]]\n    name = \"example\"\n    harness = false\n    ```\n\n2. Create a benchmarks file at `benches/example.rs`[^1] with your benchmarking code:\n\n    ```rust\n    fn main() {\n        // Run registered benchmarks.\n        divan::main();\n    }\n\n    // Register a `fibonacci` function and benchmark it over multiple cases.\n    #[divan::bench(args = [1, 2, 4, 8, 16, 32])]\n    fn fibonacci(n: u64) -\u003e u64 {\n        if n \u003c= 1 {\n            1\n        } else {\n            fibonacci(n - 2) + fibonacci(n - 1)\n        }\n    }\n    ```\n\n3. Run your benchmarks with [`cargo bench`](https://doc.rust-lang.org/cargo/commands/cargo-bench.html):\n\n    ```txt\n    example       fastest  │ slowest  │ median   │ mean     │ samples │ iters\n    ╰─ fibonacci           │          │          │          │         │\n       ├─ 1       0.626 ns │ 1.735 ns │ 0.657 ns │ 0.672 ns │ 100     │ 819200\n       ├─ 2       2.767 ns │ 3.154 ns │ 2.788 ns │ 2.851 ns │ 100     │ 204800\n       ├─ 4       6.816 ns │ 7.671 ns │ 7.061 ns │ 7.167 ns │ 100     │ 102400\n       ├─ 8       57.31 ns │ 62.51 ns │ 57.96 ns │ 58.55 ns │ 100     │ 12800\n       ├─ 16      2.874 µs │ 3.812 µs │ 2.916 µs │ 3.006 µs │ 100     │ 200\n       ╰─ 32      6.267 ms │ 6.954 ms │ 6.283 ms │ 6.344 ms │ 100     │ 100\n    ```\n\nSee [`#[divan::bench]`][bench_attr] for info on benchmark function registration.\n\n## Examples\n\nPractical example benchmarks can be found in the [`examples/benches`](https://github.com/nvzqz/divan/tree/main/examples/benches)\ndirectory. These can be benchmarked locally by running:\n\n```sh\ngit clone https://github.com/nvzqz/divan.git\ncd divan\n\ncargo bench -q -p examples --all-features\n```\n\nMore thorough usage examples can be found in the [`#[divan::bench]` documentation][bench_attr_examples].\n\n## License\n\nLike the Rust project, this library may be used under either the\n[MIT License](https://github.com/nvzqz/divan/blob/main/LICENSE-MIT) or\n[Apache License (Version 2.0)](https://github.com/nvzqz/divan/blob/main/LICENSE-APACHE).\n\n[^1]: Within your crate directory, i.e. [`$CARGO_MANIFEST_DIR`](https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates)\n\n[bench_attr]: https://docs.rs/divan/latest/divan/attr.bench.html\n[bench_attr_examples]: https://docs.rs/divan/latest/divan/attr.bench.html#examples\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvzqz%2Fdivan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnvzqz%2Fdivan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnvzqz%2Fdivan/lists"}