{"id":21702245,"url":"https://github.com/tweag/hyperion","last_synced_at":"2026-04-02T02:36:39.302Z","repository":{"id":56844524,"uuid":"77460522","full_name":"tweag/hyperion","owner":"tweag","description":"A lab for future Criterion features.","archived":false,"fork":false,"pushed_at":"2019-01-09T20:18:13.000Z","size":106,"stargazers_count":28,"open_issues_count":7,"forks_count":1,"subscribers_count":76,"default_branch":"master","last_synced_at":"2025-03-26T09:21:28.019Z","etag":null,"topics":["benchmark-framework","benchmarking","criterion","haskell","hyperion","latency","performance"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tweag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-27T14:16:44.000Z","updated_at":"2024-11-28T01:44:32.000Z","dependencies_parsed_at":"2022-09-09T02:23:02.216Z","dependency_job_id":null,"html_url":"https://github.com/tweag/hyperion","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/tweag%2Fhyperion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2Fhyperion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2Fhyperion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2Fhyperion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tweag","download_url":"https://codeload.github.com/tweag/hyperion/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248586267,"owners_count":21128995,"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-framework","benchmarking","criterion","haskell","hyperion","latency","performance"],"created_at":"2024-11-25T21:12:20.495Z","updated_at":"2026-04-02T02:36:39.266Z","avatar_url":"https://github.com/tweag.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hyperion: Haskell-based systems benchmarking\n\n[![Build Status](https://travis-ci.org/tweag/hyperion.svg?branch=master)](https://travis-ci.org/tweag/hyperion)\n\nHyperion is a DSL for writing benchmarks to measure and analyze\nsoftware performance. It is a lab for future [Criterion][criterion]\nfeatures.\n\n## Getting started\n\n### Build\n\nYou can build the [`micro benchmark example`](examples/micro-benchmarks.hs)\nusing stack:\n\n``` shell\n$ stack build\n$ stack exec hyperion-micro-benchmark-example\n```\n\n### Example usage\n\nThe Hyperion DSL is a backwards compatible extension\nto [Criterion][criterion]'s DSL (except for the rarely used `env`\ncombinator, which has a safer type). Here is an example:\n\n``` haskell\nbenchmarks :: [Benchmark]\nbenchmarks =\n    [ bench \"id\" (nf id ())\n    , series [0,5..20] $ \\n -\u003e\n        bgroup \"pure-functions\"\n          [ bench \"fact\" (nf fact n)\n          , bench \"fib\" (nf fib n)\n          ]\n    , series [1..4] $ \\n -\u003e\n        series [1..n] $ \\k -\u003e\n          bench \"n choose k\" $ nf (uncurry choose) (n, k)\n    ]\n\nmain :: IO ()\nmain = defaultMain \"hyperion-example-micro-benchmarks\" benchmarks\n```\n\nBy default Hyperion runs your benchmarks and pretty prints the\nresults. There are several command-line options that you can pass to\nthe executable, like printing the results to a JSON file or including\nindividual raw measurements. To see the full set of options run the\nexecutable with `--help`:\n\n``` shell\n$ stack exec hyperion-micro-benchmark-example -- --help\nUsage: hyperion-micro-benchmark-example ([--pretty] | [-j|--json PATH] |\n                                        [-f|--flat PATH]) ([-l|--list] | [--run]\n                                        | [--no-analyze]) [--raw]\n                                        [--arg KEY:VAL] [NAME...]\n\nAvailable options:\n  -h,--help                Show this help text\n  --pretty                 Pretty prints the measurements on stdout.\n  -j,--json PATH           Where to write the json benchmarks output. Can be a\n                           file name, a directory name or '-' for stdout.\n  -f,--flat PATH           Where to write the json benchmarks output. Can be a\n                           file name, a directory name or '-' for stdout.\n  --version                Display version information\n  -l,--list                List benchmark names\n  --run                    Run benchmarks and analyze them (default)\n  --no-analyze             Only run the benchmarks\n  --raw                    Include raw measurement data in report.\n  --arg KEY:VAL            Extra metadata to include in the report, in the\n                           format key:value.\n```\n\n[criterion]: http://www.serpentine.com/criterion/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftweag%2Fhyperion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftweag%2Fhyperion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftweag%2Fhyperion/lists"}