From fde3ff94911f2870698fab1aac9778e102f696d8 Mon Sep 17 00:00:00 2001 From: Daniel Abramov Date: Mon, 15 May 2023 14:02:55 +0200 Subject: [PATCH] Update README to include performance note --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 5e5b38c..4272ae2 100644 --- a/README.md +++ b/README.md @@ -65,9 +65,24 @@ want to process a stream of bytes without regard to those boundaries, try [`ws_stream_tungstenite`](https://crates.io/crates/ws_stream_tungstenite), which builds upon this crate. +## Is it performant? + +In essence, `async-tungstenite` is a wrapper for `tungstenite`, so the performance is capped by the performance of `tungstenite`. `tungstenite` +has a decent performance (it has been used in production for real-time communication software, video conferencing, etc), but it's definitely +not the fastest WebSocket library in the world at the moment of writing this note. + +If performance is of a paramount importance for you (especially if you send **large messages**), then you might want to check other libraries +that have been designed to be performant or you could file a PR against `tungstenite` to improve the performance! + +We are aware of changes that both `tungstenite` and `async-tungstenite` need in order to fill the gap of ~30% performance difference between `tungstenite` +and more performant libraries like `fastbwebsockets`, but we have not worked on that yet as it was not required for the use case that original authors designed +the library for. In the course of past years we have merged several performance improvements submitted by the awesome community of Rust users who helped to improve +the library! For a quick summary of the pending performance problems/improvements, see [the comment](https://github.com/snapview/tungstenite-rs/issues/352#issuecomment-1537488614). + ## tokio-tungstenite Originally this crate was created as a fork of [tokio-tungstenite](https://github.com/snapview/tokio-tungstenite) and ported to the traits of the [`futures`](https://crates.io/crates/futures) crate. Integration into async-std, tokio and gio was added on top of that. +