RustTokioBenchmark
Umpire
RustTokioBenchmark | Umpire | |
---|---|---|
1 | 4 | |
0 | 7 | |
- | - | |
2.7 | 8.3 | |
about 1 month ago | about 1 year ago | |
Rust | Rust | |
MIT License | GNU General Public License v3.0 only |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
RustTokioBenchmark
-
3 years of fulltime Rust game development, and why we're leaving Rust behind
> If you ever pull up a debugger and step through an async Rust/tokio codebase, you'll get a good sense for what the overhead here we're talking about is.
So I didn't quite do that, but the overhead was interesting to me anyway, and as I was unable to find existing benchmarks (surely they exist?), I instructed computer to create one for me: https://github.com/eras/RustTokioBenchmark
On this wee laptop the numbers are 532 vs 6381 cpu cycles when sending a message (one way) from one async thread to another (tokio) or one kernel thread to another (std::mpsc), when limited to one CPU. (It's limited to one CPU as rdtscp numbers are not comparable between different CPUs; I suppose pinning both threads to their own CPUs and actually measuring end-to-end delay would solve that, but this is what I have now.)
So this was eye-opening to me, as I expected tokio to be even faster! But still, it's 10x as fast as the thread-based method.. Straight up callback would still be a lot faster, of course, but it will affect the way you structure your code.
Improvements to methodology accepted via pull requests :).
Umpire
-
3 years of fulltime Rust game development, and why we're leaving Rust behind
* https://github.com/joshhansen/Umpire
-
Hey Rustaceans! Got a question? Ask here (13/2023)!
The reason for this is that I'd like to use an RAII pattern to control player turns in Umpire. When the struct is initialized, it starts the player's turn, and when the struct is dropped, it ends the player's turn.
-
What's everyone working on this week (5/2023)?
Wound up with some time so I figured I'd port my Umpire military strategy game to a client-server architecture so people can play it online. This will give me some experience with Tokio, tarpc, and async Rust generally, since I'm eyeing a possible Rust dev gig in my future.
-
Am I the only one who finds Rust to be centered around Linux? Any Windows devs want to share their experience with Rust?
I've done a little bit of Rust development on Windows and had a good experience. I ported my (still unfinished) Umpire game to Windows pretty easily. I had to rename some files that had colons in the filename which Windows didn't like. The actual hard part was the terminal library, but switching to crossterm was pretty straightforward. All in all it was pretty painless.
What are some alternatives?
ntfs - An implementation of the NTFS filesystem in a Rust crate, usable from firmware level up to user-mode.
lxd-snapper - LXD snapshots, automated
mini-me - Inline multiline text-editor/prompt written in Rust.
xwin - A utility for downloading and packaging the Microsoft CRT headers and libraries, and Windows SDK headers and libraries needed for compiling and linking programs targeting Windows.
tui-realm - 👑 tui-rs framework to build stateful applications with a React/Elm inspired approach
wasm-bindgen-serde-example
sciter - Sciter: the Embeddable HTML/CSS/JS engine for modern UI development
desktop-streaming - WebRTC desktop streamer using Rust
windows-rs - Rust for Windows
music-vibes - Desktop app for translating audio output into vibrations
kobold - Easy declarative web interfaces.
open_safety - An application to assist with securing script execution