{"id":20531900,"url":"https://github.com/binakot/abstract-rest-service-benchmark","last_synced_at":"2025-10-28T17:03:34.123Z","repository":{"id":134568212,"uuid":"110371401","full_name":"binakot/Abstract-Rest-Service-Benchmark","owner":"binakot","description":"A set of template services in different languages and frameworks. An abstract performance comparison based on the endpoint throughput. There are no objective benefits, just an elementary comparison of primitive RESTful API services. :shipit:","archived":false,"fork":false,"pushed_at":"2020-10-23T06:05:14.000Z","size":337,"stargazers_count":16,"open_issues_count":4,"forks_count":14,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T06:31:28.679Z","etag":null,"topics":["benchmark","hacktoberfest","hacktoberfest-accepted","performance","rest-api","service","template","test","throughput"],"latest_commit_sha":null,"homepage":"","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/binakot.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":"2017-11-11T18:53:22.000Z","updated_at":"2025-02-01T18:55:23.000Z","dependencies_parsed_at":"2023-06-19T01:37:29.728Z","dependency_job_id":null,"html_url":"https://github.com/binakot/Abstract-Rest-Service-Benchmark","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/binakot/Abstract-Rest-Service-Benchmark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binakot%2FAbstract-Rest-Service-Benchmark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binakot%2FAbstract-Rest-Service-Benchmark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binakot%2FAbstract-Rest-Service-Benchmark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binakot%2FAbstract-Rest-Service-Benchmark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/binakot","download_url":"https://codeload.github.com/binakot/Abstract-Rest-Service-Benchmark/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/binakot%2FAbstract-Rest-Service-Benchmark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279170788,"owners_count":26118639,"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","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","hacktoberfest","hacktoberfest-accepted","performance","rest-api","service","template","test","throughput"],"created_at":"2024-11-16T00:10:43.793Z","updated_at":"2025-10-16T08:51:19.347Z","avatar_url":"https://github.com/binakot.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abstract Rest Service Benchmark\n\n[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/0)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/0)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/1)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/1)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/2)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/2)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/3)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/3)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/4)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/4)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/5)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/5)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/6)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/6)[![](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/images/7)](https://sourcerer.io/fame/binakot/binakot/Abstract-Rest-Service-Benchmark/links/7)\n\n## Requirements\n\n* PORT: `8080`\n\n* API request: `/api/test`\n\n* API response: `Hello, World!` *(text/plain, UTF-8, 13 bytes)*\n\n## Benchmark\n\nCommand for [WRK](https://github.com/wg/wrk):\n\n```bash\n$ wrk -t8 -c512 -d2m --timeout 10s --latency http://localhost:8080/api/test\n```\n\n---\n\n## Results\n\n| # | Service | Language | Framework | RPS |\n| - | ------- | -------- | --------- | --- |\n|  | [Java Light 4J](/java-light-4j/) | Java | oracle jdk 9.0.4 + ligth4j | 401511.94 |\n|  | [.Net Core](/dot-net-core/) | C# | dotnet 2.1.4 | 249758.46 |\n|  | [Haskell Warp](/haskell-warp/) | Haskell | ghc 7.10.3 + warp | 191020.62 |\n|  | [Rust Iron](/rust-iron/) | Rust | rust 1.24.1 + iron | 186726.17 |\n|  | [Go Gorilla/Mux](/go-gorilla-mux/) | Golang | go sdk 1.9.4 + gorilla/mux | 131499.79 |\n|  | [.Net Core ASP.NET MVC](/dot-net-core-asp-net/) | C# | dotnet 2.1.4 | 99091.85 |\n|  | [NodeJS](/nodejs/) | JavaScript | nodejs 8.9.4 | 94132.92 |\n|  | [Python Sanic](/python-sanic/) | Python | python 3.5.2 + sanic| 74854.41 |\n|  | [NodeJS Express](/nodejs-express/) | JavaScript | nodejs 8.9.4 + express | 58769.29 |\n|  | [Java Spring Boot](/java-spring-boot/) | Java | oracle jdk 9.0.4 + spring boot | 56253.12 |\n|  | [.Net Core Freya](/dot-net-core-freya/) | F# | dotnet 2.1.4 + freya-hopac | 49736.08 |\n|  | [Python Aiohttp](/python-aiohttp/) | Python | python 3.5.2 + aiohttp | 4603.01 |\n|  | [Python Flask](/python-flask/) | Python | python 3.5.2 + flask | 200.44 |\n|  | [.Net Core Websocket](/dot-net-core-websocket/) | C# | dotnet 2.1.4 + websocket | TBD |\n|  | [.Net Core Giraffe](/dot-net-core-giraffe/) | F# | dotnet 2.1.4 + giraffe | TBD |\n|  | [Python API Star](/python-apistar/) | Python | python 3.5.2 + apistar | TBD |\n|  | [Rust Rocket](/rust-rocket/) | Rust | rust 1.24.1 + rocket | TBD |\n\n---\n\n## Services\n\n![dotnet-core-logo](images/dotnet-core.png)\n\n### .Net Core by [@vanbukin](https://github.com/vanbukin)\n\nLanguage: C#\n\nFramework: .Net Core 2\n\nRun:\n\n```bash\n$ dotnet restore\n$ dotnet publish -c Release\n$ export ASPNETCORE_ENVIRONMENT=Production\n$ export ASPNETCORE_URLS=http://0.0.0.0:8080\n$ cd ./dotNetCoreRestService/bin/Release/netcoreapp2.1/publish\n$ dotnet dotNetCoreRestService.dll\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### .Net Core ASP.NET MVC by [@binakot](https://github.com/binakot)\n\nLanguage: C#\n\nFramework: .Net Core 2, ASP.NET MVC\n\nMain tutorial: https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api\n\nRun:\n\n```bash\n$ dotnet restore\n$ dotnet publish -c Release\n$ export ASPNETCORE_ENVIRONMENT=Production\n$ export ASPNETCORE_URLS=http://0.0.0.0:8080\n$ cd ./dotNetCoreRestService/bin/Release/netcoreapp2.0/publish\n$ dotnet dotNetCoreRestService.dll\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### .Net Core Websocket by [@petriashev](https://github.com/petriashev)\n\nLanguage: C#\n\nFramework: .Net Core 2, Websocket\n\nRun:\n\n```bash\n$ dotnet restore\n$ dotnet publish -c Release\n$ export ASPNETCORE_ENVIRONMENT=Production\n$ export ASPNETCORE_URLS=http://0.0.0.0:8080\n$ cd ./bin/Release/netcoreapp2.0/publish\n$ dotnet dot-net-core-websocket.dll\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### .Net Core Freya by [@Szer](https://github.com/Szer)\n\nLanguage: F#\n\nFramework: .Net Core 2, Freya\n\nRun:\n\n```bash\n$ dotnet restore\n$ dotnet publish -c Release\n$ export ASPNETCORE_ENVIRONMENT=Production\n$ export ASPNETCORE_URLS=http://0.0.0.0:8080\n$ cd ./bin/Release/netcoreapp2.0/publish\n$ dotnet dot-net-core-hopac-freya.dll\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### .Net Core Giraffe by [@Szer](https://github.com/Szer)\n\nLanguage: F#\n\nFramework: .Net Core 2, Giraffe\n\nRun:\n\n```bash\n$ dotnet restore\n$ dotnet publish -c Release\n$ export ASPNETCORE_ENVIRONMENT=Production\n$ export ASPNETCORE_URLS=http://0.0.0.0:8080\n$ cd ./bin/Release/netcoreapp2.0/publish\n$ dotnet dot-net-core-giraffe.dll\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n![golang-logo](images/golang.png)\n\n### Go Gorilla/Mux by [@binakot](https://github.com/binakot)\n\nLanguage: Go\n\nFramework: Go SDK, Gorilla/Mux\n\nMain tutorial: https://www.codementor.io/codehakase/building-a-restful-api-with-golang-a6yivzqdo\n\nRun:\n\n```bash\n$ go build\n$ ./go\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n![haskell-logo](images/haskell.png)\n\n### Haskell Warp by [@kchugalinskiy](https://github.com/kchugalinskiy)\n\nLanguage: Haskell\n\nFramework: GHC, Warp\n\nMain tutorial: http://taylor.fausak.me/2014/10/21/building-a-json-rest-api-in-haskell\n\nRequirements:\n\n* Install Haskell stack: https://docs.haskellstack.org/en/stable/README\n* Install Cabal package: `cabal install Cabal-2.0.1.1`\n\nRun:\n\n```bash\n$ stack setup\n$ stack build\n$ stack exec .stack-work/dist/**/build/test-exe/test-exe\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n![java-logo](images/java.png)\n\n### Java\n\nLanguage: Java\n\nFramework: Oracle JDK 8 or above\n\nRun:\n\n```bash\n$ gradle clean run\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### Java Light 4J by [@0ffer](https://github.com/0ffer)\n\nLanguage: Java\n\nFramework: Oracle JDK 9, Light4J\n\nMain tutorial: https://github.com/networknt/light-example-4j/tree/master/demo\n\nRun:\n\n```bash\n$ mvn clean install\n$ java -jar target/service-example-0.1.0.jar\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### Java Spring Boot by [@binakot](https://github.com/binakot)\n\nLanguage: Java\n\nFramework: Oracle JDK 9, Spring Boot\n\nMain tutorial: http://spring.io/guides/gs/rest-service\n\nRun:\n\n```bash\n$ gradle clean build\n$ java -jar build/libs/java-spring-boot-rest-service-1.0-SNAPSHOT.jar\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n![nodejs-logo](images/nodejs.png)\n\n### NodeJS by [@WilixLead](https://github.com/WilixLead)\n\nLanguage: JavaScript  \n\nFramework: Node.js\n\nMain tutorial: https://nodejs.org/api/http.html#http_class_http_server  \n\nRun:  \n\n```bash\n$ node ./index.js\n```  \n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### NodeJS Express by [@WilixLead](https://github.com/WilixLead)\n\nLanguage: JavaScript  \n\nFramework: Node.js, Express\n\nMain tutorial: http://expressjs.com/en/starter/hello-world.html  \n\nRun:  \n\n```bash\n$ npm i\n$ node ./index.js\n```  \n\nResult:\n\n```text\nTBD\n```\n\n---\n\n![python-logo](images/python.png)\n\n### Python Aiohttp by [@TyVik](https://github.com/TyVik)\n\nLanguage: Python\n\nFramework: Python 3, Aiohttp\n\nMain tutorial: https://aiohttp.readthedocs.io/en/stable/  \n\nRun:  \n\n```bash\n$ pip install -r requirements.txt\n$ python app.py\n```  \n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### Python API Star by [@sergeibershadsky](https://github.com/sergeibershadsky)\n\nLanguage: Python\n\nFramework: Python 3, API Star\n\nMain tutorial: https://github.com/encode/apistar\n\nRun:\n\n```bash\npip install -r requirements.txt\nuvicorn app:app --workers=8 --bind=0.0.0.0:8080 --pid=pid\n```\n\nResults:\n\n```text\nTBD\n```\n\n---\n\n### Python Flask by [@TyVik](https://github.com/TyVik)\n\nLanguage: Python\n\nFramework: Python 3, Flask\n\nMain tutorial: http://flask.pocoo.org/\n\nRun:\n\n```bash\n$ pip install -r requirements.txt\n$ python app.py\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### Python Sanic by [@TyVik](https://github.com/TyVik)\n\nLanguage: Python\n\nFramework: Python 3, Sanic\n\nMain tutorial: http://sanic.readthedocs.io/en/latest/  \n\nRun:  \n\n```bash\n$ pip install -r requirements.txt\n$ python app.py\n```  \n\nResults:\n\n```text\nTBD\n```\n\n---\n\n![rust-logo](images/rust.png)\n\n### Rust Iron by [@kchugalinskiy](https://github.com/kchugalinskiy)\n\nLanguage: Rust\n\nFramework: Rust SDK, Iron\n\nMain tutorial: https://github.com/iron/router/blob/master/examples/simple.rs\n\nRun:  \n\n```bash\n$ cargo run --release\n``` \n\nResult:\n\n```text\nTBD\n```\n\n---\n\n### Rust Rocket by [@qezz](https://github.com/qezz)\n\nLanguage: Rust\n\nFramework: Rust SDK, Rocket\n\nMain tutorial: https://rocket.rs/guide/getting-started/#hello-world\n\nRun:\n\n```bash\n$ ROCKET_ENV=prod cargo run --release\n```\n\nResult:\n\n```text\nTBD\n```\n\n---\n\n## Hardware\n\n* Server (rest-service) host:\n\n```text\nTBD\n```\n\n* Client (wrk) host:\n\n```text\nTBD\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinakot%2Fabstract-rest-service-benchmark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbinakot%2Fabstract-rest-service-benchmark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbinakot%2Fabstract-rest-service-benchmark/lists"}