{"id":15337289,"url":"https://github.com/vy/fiber-test","last_synced_at":"2025-04-15T02:37:08.055Z","repository":{"id":20192156,"uuid":"23463305","full_name":"vy/fiber-test","owner":"vy","description":"Clash of threads in the JVM!","archived":true,"fork":false,"pushed_at":"2019-02-08T14:43:26.000Z","size":194,"stargazers_count":42,"open_issues_count":2,"forks_count":13,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-06T17:23:52.764Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","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/vy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-29T12:28:42.000Z","updated_at":"2024-11-05T19:26:02.000Z","dependencies_parsed_at":"2022-08-02T10:38:07.696Z","dependency_job_id":null,"html_url":"https://github.com/vy/fiber-test","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/vy%2Ffiber-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vy%2Ffiber-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vy%2Ffiber-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vy%2Ffiber-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vy","download_url":"https://codeload.github.com/vy/fiber-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248995103,"owners_count":21195497,"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-10-01T10:20:29.157Z","updated_at":"2025-04-15T02:37:07.294Z","avatar_url":"https://github.com/vy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/github/license/vy/fiber-test.svg)](http://www.apache.org/licenses/LICENSE-2.0.txt)\n\nA bundle of benchmarks measuring the performance of various fiber (lightweight\nthread, actor, coroutine, etc.) implementations for the JVM.\n\n# Benchmarks\n\n- **Ring**: `N` spawned threads are connected in a ring structure.\n  Through this ring a message (an integer) is circulated `M` times. (Adopted\n  from the [Performance Measurements of Threads in Java and Processes in\n  Erlang](http://web.archive.org/web/20150906052630/https://www.sics.se/%7ejoe/ericsson/du98024.html)\n  article.)\n\n# Implementations\n\n1. [Standard Java Threads](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html)\n2. [Akka Actors](https://akka.io/)\n3. [Quasar Fibers and Actors](https://docs.paralleluniverse.co/quasar/)\n4. [Kilim Actors, Continuations, and Fibers](https://github.com/kilim/kilim)\n5. [Project Loom Continuations and Fibers](https://openjdk.java.net/projects/loom/)\n\n# Usage\n\nYou first need to build the necessary [JMH](https://openjdk.java.net/projects/code-tools/jmh/)\nfat JARs and then let the benchmark script do its job:\n\n    $ ./mvnw package\n    $ ./benchmark/benchmark.py\n\nIf you don't have a local JDK 11 installation, you can also use the shipped\n`docker.sh` to compile and run the benchmark in a Docker container:\n\n    $ ./docker.sh mvn-package\n    $ ./docker.sh benchmark\n\n# Results\n\nFor `Oracle Java 1.8.0_121-b13` running on `Intel(R) Core(TM) i3-2105 CPU @ 3.10GHz` on `Linux 4.4.0-137-generic x86_64` kernel:\n\n```\nBenchmark                                     Mode  Cnt     Score      Error  Units\nAkkaActorRingBenchmark.ringBenchmark          avgt    4   614.755 ±  151.874  ms/op\nJavaThreadRingBenchmark.ringBenchmark         avgt    4  6126.367 ±  304.880  ms/op\nKilimActorRingBenchmark.ringBenchmark         avgt    4   611.655 ±  128.317  ms/op\nKilimContinuationRingBenchmark.ringBenchmark  avgt    4    45.544 ±   11.303  ms/op\nKilimFiberRingBenchmark.ringBenchmark         avgt    4   441.433 ±   61.134  ms/op\nQuasarActorRingBenchmark.ringBenchmark        avgt    4  2627.271 ± 2114.870  ms/op\nQuasarChannelRingBenchmark.ringBenchmark      avgt    4  1589.085 ±  819.561  ms/op\nQuasarDataflowRingBenchmark.ringBenchmark     avgt    4  1866.151 ±  302.077  ms/op\nQuasarFiberRingBenchmark.ringBenchmark        avgt    4   666.120 ±  148.967  ms/op\n```\n\n# Contributors\n\n- [Arek Burdach](https://github.com/arkadius)\n- Jordan Sheinfeld\n- [nqzero](https://github.com/nqzero)\n\n# License\n\nCopyright \u0026copy; 2014-2018 [Volkan Yazıcı](http://vlkan.com/)\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvy%2Ffiber-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvy%2Ffiber-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvy%2Ffiber-test/lists"}