A Rust on-site channel benchmarking helper. Inter-Process (async / busy) & Intra-Process (async single threaded / async multi threaded)

Overview

On-Site Rust Channel Benchmarking Helper

Deploy on server to determine which public crates are the fastest for communicating in different architectures

Requirements:

  • 2 CPUs are needed for most of the experiments. Please refer to main() to change which cores you'd like to be utilized before running.

Analysis Pipeline

  1. cargo run --release
  2. Once the experiments are completed, run python3 analyze.py to view the results and the corresponding latency distributions

Crates tested by Architecture:

Async

Busy-Spinning

Future Plans

I'd like to split up the experiments to test mpmc / mpsc / spsc against each other in these different architectures. This will be included at some point but for now mpmc & mpsc have been favored as there are more use cases for them

Notes

  • Some of these crates (such as async_broadcast) are tailored to specific features which incur some speed disadvantages. Thus, I recommend doing adequate research to determine the best crate for your architecture and only use this as a reference.
  • Thread-pinning has been included in most of these experiments so please check the main() function and change the parameters as needed. If you'd like more realistic non-jittery results, consider using isolcpus or the like
  • payload_size parameter was included in main() as well, feel free to change this at your discretion. The default is 0 bytes

P.s.

If you'd like another crate added, have questions / ideas, please DM me on twitter @Dub0x3A or on discord 0xdub. Cheers and thanks

You might also like...
Yay - Yet another Yogurt - An AUR Helper written in Go
Yay - Yet another Yogurt - An AUR Helper written in Go

Yay Yet Another Yogurt - An AUR Helper Written in Go Help translate yay: Transifex Features Advanced dependency solving PKGBUILD downloading from ABS

Figma Agent for Linux (a.k.a. Font Helper)

Figma Agent for Linux (a.k.a. Font Helper)

Kurzlink is a simple static site generator built in rust

kurzlink What is kurzlink? Kurzlink is a simple static site generator built in rust.

A site for hosting (Japanese) subtitles

jimaku (字幕) jimaku is a simple site dedicated to hosting Japanese subtitles of anime or other Japanese content. It's the spiritual successor of kitsun

A simple demo to bind a TCP port with k8s exec channel.k8s.io websocket API.

k8s-webterm-connector Tired with web terminals? Let's use it with CLI! This is just a simple demo to bind a TCP port with k8s exec websocket API, whic

Core lightning (CLN) plugin to watch channel health, gossip health and ping amboss for online status

vitality Core lightning (CLN) plugin to watch channel health, gossip health and ping amboss for online status Installation Building Usage Telegram Opt

A Rust-based shell script to create a folder structure to use for a single class every semester. Mostly an excuse to use Rust.

A Rust Course Folder Shell Script PROJECT IN PROGRESS (Spring 2022) When completed, script will create a folder structure of the following schema: [ro

Replace an app's icon from a png with a single terminal script. Made with Rust

Replace macOS App Icon Replace an app's icon from a png with a single terminal CLI. Made with Rust

Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers.

unosolo Work-in-progress Rust application that converts C++ header-only libraries to single self-contained headers. Disclaimer This is my first Rust p

Comments
  • format + optional plotting

    format + optional plotting

    Rationale:

    • .gitignore at root of the project to screen mypy cache
    • make analyze.py more readable and reduce repetition
    • Plotting by default causes memory safety issues depending on VW running and Qt plugin configuration
    opened by Belousovnm 1
Owner
Crypto HFT | Journey to sub micro tick-to-trade
null
An easy-to-use, incremental, multi-threaded garbage collector for Rust

Refuse An easy-to-use, incremental, multi-threaded garbage collector for Rust. //! A basic usage example demonstrating the garbage collector. use refu

Khonsu Labs 6 May 3, 2024
Multi-threaded CLI torrent scraper for displaying searched for magnet links; tailored for use with plex & ssh.

magnetfinder Multi-threaded CLI torrent aggregator; scrapes torrent results from multiple websites and delivers them into a table in your terminal! Su

Ryan 59 Dec 10, 2022
Multi-threaded CLI torrent scraper for displaying searched for magnet links; tailored for use with plex & ssh.

magnetfinder Multi-threaded CLI torrent aggregator; scrapes torrent results from multiple websites and delivers them into a table in your terminal! Su

null 59 Dec 10, 2022
A multi-threaded Twitch chat archiving and downloading tool.

Twitch Chat Downloader ??️ tcd is a multi-threaded Twitch Chat Downloader built in Rust ?? . Usage: tcd [OPTIONS] <--channel <CHANNEL>|--video <VIDEO>

Matthew Polak 6 Dec 19, 2022
Fragmented Classless Inter-Domain Routing (FCIDR)

fcidr Fragmented Classless Inter-Domain Routing (FCIDR) A library exposing a data structure to represent a set of CIDR ranges as well as an interface

Nicholas Omer Chiasson 9 Jul 28, 2023
CarLI is a framework for creating single-command and multi-command CLI applications in Rust

CarLI is a framework for creating single-command and multi-command CLI applications in Rust. The framework provides error and IO types better suited for the command line environment, especially in cases where unit testing is needed.

Kevin Herrera 3 Jan 21, 2022
Benchmarking C, Python, and Rust on the "sp" problem

Fast SP Various implementations of the problem in this blog post. Requirements To run this, you will need Rust Nightly and Python 3.8+ with numpy. Rus

Eddie Antonio Santos 2 Jul 13, 2023
A command-line benchmarking tool

hyperfine 中文 A command-line benchmarking tool. Demo: Benchmarking fd and find: Features Statistical analysis across multiple runs. Support for arbitra

David Peter 14.1k Jan 4, 2023
ObfusEval is the benchmarking tool to evaluate the reliability of the code obfuscating transformation.

ObfusEval ObfusEval is the benchmarking tool to evaluate the reliability of the code obfuscating transformation. The following two metrics related the

Software Engineering Lab @ NAIST 4 Dec 15, 2022
A simple AUR helper made in Rust.

AURme A simple AUR helper made in Rust. Description AURme is a simple and minimalist tool made to help users install, update and maintain packages fro

Marco Padeiro 7 Jun 23, 2023