rspc/examples/channel_async_benchmark.rs
zawz bc23b1a9db feat: tcp transport
- add tcp transport
- refactor examples
- improve proc macro
- add benchmark examples
2026-07-04 11:14:25 +02:00

39 lines
1.1 KiB
Rust

use futures::{stream::FuturesUnordered, StreamExt};
use rspc_dev_utilities::test_data::{
dur_to_str, make_test_data, TestData, TestDataClient, TestDataServer, CALLS_PER_THREAD,
DATASIZE, THREADS,
};
use rspc::transport;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let (c, s) = transport::channel::new_async();
let data: TestData = make_test_data(DATASIZE);
let srv_thread = tokio::spawn(async move {
let mut server = TestDataServer::from(data);
server.listen(s).await
});
let client = TestDataClient::new(c);
let now = std::time::Instant::now();
{
let set = FuturesUnordered::new();
for _ in 0..THREADS {
set.push(async {
for _ in 0..CALLS_PER_THREAD {
client.heavy_calc().await.unwrap();
}
});
}
let _: Vec<_> = set.collect().await;
}
println!("time: {}", dur_to_str(now.elapsed()));
client.stop().await.unwrap();
srv_thread.await.unwrap().unwrap();
Ok(())
}