A microbenchmark that spawns one million concurrent actors/coroutines to compare concurrency performance across programming languages.
Skynet is a concurrency microbenchmark that spawns one million actors or coroutines in a hierarchical structure to test and compare the performance of different programming languages and concurrency models. It measures how efficiently various systems handle massive concurrency by creating, communicating with, and aggregating results from a large number of lightweight processes.
Developers and researchers evaluating concurrency performance across languages, or those choosing a language/framework for high-concurrency applications like distributed systems or real-time data processing.
It provides a standardized, reproducible benchmark to objectively compare concurrency implementations, helping identify performance bottlenecks and optimal choices for scalable systems.
Skynet 1M threads microbenchmark
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements the benchmark in over 10 languages including Scala, Erlang, Go, and .NET, enabling direct performance comparisons across diverse concurrency models.
Each language directory has simple run commands (e.g., 'go run skynet.go' or 'dotnet run'), reducing setup time and making it easy to reproduce tests.
Includes timing results on actual machines like Macbook Core M and i7 CPUs, providing practical performance insights that reflect runtime environments.
The benchmark computes a known sum (499999500000) to ensure implementations are correct before timing, adding reliability to the performance metrics.
Some language versions, such as Java/Quasar fibers, are marked as TODO in the README, limiting the benchmark's comprehensiveness for those concurrency models.
Results vary significantly with hardware and OS, as shown with different times on Macbook vs. i7 systems, which can skew comparisons without controlled setups.
Focuses solely on actor/coroutine spawning and message passing in a hierarchical structure, ignoring critical aspects like error handling, parallelism, or resource contention.
The README includes data from older versions (e.g., GHC 7.10.3), which may not reflect current language or runtime performance improvements.