Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sklose/disrustor
A port of the LMAX Disruptor to Rust
https://github.com/sklose/disrustor
disruptor lmax threading
Last synced: 1 day ago
JSON representation
A port of the LMAX Disruptor to Rust
- Host: GitHub
- URL: https://github.com/sklose/disrustor
- Owner: sklose
- License: mit
- Created: 2019-07-28T19:39:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-09-05T12:48:35.000Z (over 1 year ago)
- Last Synced: 2025-01-09T11:07:40.519Z (9 days ago)
- Topics: disruptor, lmax, threading
- Language: Rust
- Homepage:
- Size: 87.9 KB
- Stars: 101
- Watchers: 4
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![CI](https://github.com/sklose/disrustor/actions/workflows/ci.yaml/badge.svg)](https://github.com/sklose/disrustor/actions/workflows/ci.yaml)
[![crates.io](https://img.shields.io/crates/v/disrustor.svg)](https://crates.io/crates/disrustor)
[![codecov](https://codecov.io/gh/sklose/disrustor/branch/master/graph/badge.svg?token=UE3RML6O57)](https://codecov.io/gh/sklose/disrustor)# Disrustor
This project is a port of the [LMAX Disruptor](https://lmax-exchange.github.io/disruptor/) to Rust.
# Features
- [x] Single Producer
- [x] Batch Consumer
- [X] Blocking Wait Strategy
- [X] Spinning Wait Strategy
- [ ] Multi Producer
- [ ] Worker Pools
- [X] DSL
- [ ] Documentation# Benchmarks
Preliminary benchmark results for sending i32-sized messages from a producer to a consumer.
| Name | Batch Size | Throughput |
|------|------------|------------|
| mpsc channel | 1[1](#mpsc-footnote) | 34.894 Melem/s |
| disrustor spinning | 1 | 38.260 Melem/s |
| disrustor spinning | 10 | 941.39 Melem/s |
| disrustor spinning | 50 | 940.77 Melem/s |
| disrustor spinning | 100 | 942.68 Melem/s |
| disrustor spinning | 1000 | 942.02 Melem/s |
| disrustor spinning | 2000 | 940.75 Melem/s |
| disrustor spinning | 4000 | 938.44 Melem/s |
| disrustor blocking | 1 | 7.0191 Melem/s |
| disrustor blocking | 10 | 85.386 Melem/s |
| disrustor blocking | 50 | 997.89 Melem/s |
| disrustor blocking | 100 | 998.97 Melem/s |
| disrustor blocking | 1000 | 1.0032 Gelem/s |
| disrustor blocking | 2000 | 999.67 Melem/s |
| disrustor blocking | 4000 | 999.15 Melem/s |1: mpsc channels do not support batching
# Related Work
- [Turbine](https://github.com/polyfractal/Turbine)