{"id":13511529,"url":"https://github.com/hanabi1224/Programming-Language-Benchmarks","last_synced_at":"2025-03-30T20:33:22.223Z","repository":{"id":38210143,"uuid":"333414073","full_name":"hanabi1224/Programming-Language-Benchmarks","owner":"hanabi1224","description":"Yet another implementation of computer language benchmarks game","archived":false,"fork":false,"pushed_at":"2025-03-29T19:45:15.000Z","size":83648,"stargazers_count":705,"open_issues_count":92,"forks_count":142,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-03-30T18:06:07.540Z","etag":null,"topics":["benchmark","benchmarks","benchmarks-game","ci-job","crystal","csharp","go","golang","java","javascript","kotlin","kotlin-native","nim","rust","typescript","vlang","vue"],"latest_commit_sha":null,"homepage":"https://programming-language-benchmarks.vercel.app/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hanabi1224.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-27T12:32:14.000Z","updated_at":"2025-03-29T19:45:20.000Z","dependencies_parsed_at":"2023-02-15T20:45:58.060Z","dependency_job_id":"92755c07-72b1-4f30-8f8a-7e36a161dc47","html_url":"https://github.com/hanabi1224/Programming-Language-Benchmarks","commit_stats":{"total_commits":562,"total_committers":40,"mean_commits":14.05,"dds":"0.17259786476868333","last_synced_commit":"cb2eb87af1b2677633ce4c94e7477835da8237ef"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabi1224%2FProgramming-Language-Benchmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabi1224%2FProgramming-Language-Benchmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabi1224%2FProgramming-Language-Benchmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hanabi1224%2FProgramming-Language-Benchmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hanabi1224","download_url":"https://codeload.github.com/hanabi1224/Programming-Language-Benchmarks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246379396,"owners_count":20767694,"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","benchmarks","benchmarks-game","ci-job","crystal","csharp","go","golang","java","javascript","kotlin","kotlin-native","nim","rust","typescript","vlang","vue"],"created_at":"2024-08-01T03:00:53.904Z","updated_at":"2025-03-30T20:33:22.216Z","avatar_url":"https://github.com/hanabi1224.png","language":"C#","readme":"# [Programming Language Benchmarks](https://programming-language-benchmarks.vercel.app/)\n\n[![bench](https://github.com/hanabi1224/Programming-Language-Benchmarks/actions/workflows/bench.yml/badge.svg)](https://github.com/hanabi1224/Programming-Language-Benchmarks/actions/workflows/bench.yml)\n[![MIT License](https://img.shields.io/github/license/hanabi1224/Programming-Language-Benchmarks.svg)](https://github.com/hanabi1224/Programming-Language-Benchmarks/blob/master/LICENSE)\n\n\u003c!-- [![Build status](https://img.shields.io/appveyor/ci/hanabi1224/Programming-Language-Benchmarks/main.svg)](https://ci.appveyor.com/project/hanabi1224/Programming-Language-Benchmarks) --\u003e\n\n# Why Build This\n\nThe idea is to build an automated process for benchmark generation and publishing.\n\n### Comparable numbers\n\n_It currently use CI to generate benchmark results to guarantee all the numbers are generated from the same environment at nearly the same time. All benchmark tests are executed in a single CI job_\n\n### Automatic publishing\n\n_Once a change is merged into main branch, the CI job will re-generate and publish the static website_\n\n## Main Goals\n\n- Compare performance differences between different languages. Note that implementations might be using different optimizations, e.g. with or w/o multithreading, please do read the source code to check if it's a fair comparison or not.\n- Compare performance differences between different compilers or runtimes of the same language with the same source code.\n- Facilitate benchmarking on real server environments as nowadays more and more applications are deployed with docker/k8s. It's likely to get a very different result from what you get on your dev machine.\n- A reference for CI setup / Dev environment setup / package management setup for different languages. Refer to [Github action](https://github.com/hanabi1224/Programming-Language-Benchmarks/blob/main/.github/workflows/bench.yml)\n- It focuses more on new programming languages, classic\n  programming languages that are covered by [CLBG](https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html) receive limited or no maintenance, based on their popularity.\n\n# [Website](https://programming-language-benchmarks.vercel.app/)\n\n### Build\n\nTo achieve better SEO, the published site is static and prerendered, powered by [nuxt.js](https://nuxtjs.org/).\n\n### Host\n\nThe website is hosted on [Vercel](https://vercel.com/)\n\n### Development\n\n```\ngit clone https://github.com/hanabi1224/Programming-Language-Benchmarks.git\n\ncd website\npnpm i\npnpm build\npnpm dev\n```\n\n# Benchmarks\n\n_All benchmarks are defined in [bench.yaml](https://github.com/hanabi1224/Programming-Language-Benchmarks/blob/main/bench/bench.yaml)_\n\n_Current benchmarks problems and their implementations are from [The Computer Language Benchmarks Game](https://benchmarksgame-team.pages.debian.net/benchmarksgame/) ([ Repo](https://salsa.debian.org/benchmarksgame-team/benchmarksgame/))_\n\n# Local development\n\n## Prerequisites\n\n[net9](https://dotnet.microsoft.com/)\n\n[nodejs 14](https://nodejs.org/)\n\n[pnpm](https://pnpm.io/installation)\n\n[podman](https://podman.io/getting-started/installation) (or [docker](https://www.docker.com/) by changing `docker_cmd: podman` to `docker_cmd: docker` in `bench/bench.yaml`)\n\n## Build\n\n_The 1st step is to build source code from various of languages_\n\n```bash\ncd bench\n# To build a subset\ndotnet run --project tool -- --task build --langs lisp go --problems nbody helloworld --force-rebuild\n# To build all\ndotnet run --project tool -- --task build\n```\n\n## Test\n\n_The 2nd step is to test built binaries to ensure the correctness of their implementation_\n\n```bash\ncd bench\n# To test a subset\ndotnet run --project tool -- --task test --langs lisp go --problems nbody helloworld\n# To test all\ndotnet run --project tool -- --task test\n```\n\n## Bench\n\n_The 3rd step is to generate benchmarks_\n\n```bash\ncd bench\n# To bench a subset\ndotnet run --project tool -- --task bench --langs lisp go --problems nbody helloworld\n# To bench all\ndotnet run --project tool -- --task bench\n```\n\n_For usage_\n\n```bash\ncd bench\ndotnet run --project tool -- -h\n\nBenchTool\n  Main function\n\nUsage:\n  BenchTool [options]\n\nOptions:\n  --config \u003cconfig\u003e              Path to benchmark config file [default: bench.yaml]\n  --algorithm \u003calgorithm\u003e        Root path that contains all algorithm code [default: algorithm]\n  --include \u003cinclude\u003e            Root path that contains all include project templates [default: include]\n  --build-output \u003cbuild-output\u003e  Output folder of build step [default: build]\n  --task \u003ctask\u003e                  Benchmark task to run, valid values: build, test, bench [default: build]\n  --force-pull-docker            A flag that indicates whether to force pull docker image even when it exists [default: False]\n  --force-rebuild                A flag that indicates whether to force rebuild [default: False]\n  --fail-fast                    A Flag that indicates whether to fail fast when error occurs [default: False]\n  --build-pool                   A flag that indicates whether builds that can run in parallel [default: False]\n  --verbose                      A Flag that indicates whether to print verbose information [default: False]\n  --no-docker                    A Flag that forces disabling docker [default: False]\n  --langs \u003clangs\u003e                Languages to include, e.g. --langs go csharp [default: ]\n  --problems \u003cproblems\u003e          Problems to include, e.g. --problems binarytrees nbody [default: ]\n  --environments \u003cenvironments\u003e  OS environments to include, e.g. --environments linux windows [default: ]\n  --version                      Show version information\n  -?, -h, --help                 Show help and usage information\n```\n\n## Refresh website\n\n_Lastly you can re-generate website with latest benchmark numbers_\n\n```\ncd website\npnpm i\npnpm content\npnpm build\nserve dist\n```\n\n# TODOs\n\nIntegrate test environment info into website\n\nIntegrate build / test / benchmark information into website\n\n...\n\n# How to contribute\n\nTODO\n\n# Thanks\n\n_This is inspired by [The Computer Language Benchmarks Game](https://benchmarksgame-team.pages.debian.net/benchmarksgame/), thanks to the curator._\n\n# LICENSES\n\nCode of problem implementation from [The Computer Language Benchmarks Game](https://salsa.debian.org/benchmarksgame-team/benchmarksgame/) is under their [Revised BSD](https://benchmarksgame-team.pages.debian.net/benchmarksgame/license.html)\n\nOther code in this repo is under MIT.\n","funding_links":[],"categories":["C# #"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanabi1224%2FProgramming-Language-Benchmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhanabi1224%2FProgramming-Language-Benchmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanabi1224%2FProgramming-Language-Benchmarks/lists"}