diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-12-18 21:01:36 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-12-18 22:49:18 +0100 |
| commit | 5cf50403fabbb3e79b771bc157d5a4c57c614570 (patch) | |
| tree | b6887878931212c8a35b8650af8527aa5a9f071c /server/src/benchmark.rs | |
| parent | eb9412a2847a199f04e74d8a17481b7d0c9e36a6 (diff) | |
| download | hurrycurry-5cf50403fabbb3e79b771bc157d5a4c57c614570.tar hurrycurry-5cf50403fabbb3e79b771bc157d5a4c57c614570.tar.bz2 hurrycurry-5cf50403fabbb3e79b771bc157d5a4c57c614570.tar.zst | |
add benchmark to measure movement packet count
Diffstat (limited to 'server/src/benchmark.rs')
| -rw-r--r-- | server/src/benchmark.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/server/src/benchmark.rs b/server/src/benchmark.rs new file mode 100644 index 00000000..ec4f10e8 --- /dev/null +++ b/server/src/benchmark.rs @@ -0,0 +1,55 @@ +/* + Hurry Curry! - a game about cooking + Copyright (C) 2025 Hurry Curry! Contributors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, version 3 of the License only. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +*/ + +use crate::server::{Server, ServerConfig}; +use anyhow::Result; +use hurrycurry_protocol::PacketC; +use std::{path::PathBuf, time::Instant}; +use tokio::sync::broadcast; + +pub fn benchmark(data_path: PathBuf) -> Result<()> { + let mut server = Server::new( + data_path, + ServerConfig::default(), + broadcast::channel(1024).0, + )?; + + server.load(server.index.generate_with_book("junior").unwrap(), None); + + let start = Instant::now(); + let mut packets = 0; + let mut packets_movement = 0; + loop { + if server.tick(1. / 50.).is_some() { + break; + } + while let Some(p) = server.packet_out.pop_front() { + packets += 1; + if let PacketC::Movement { .. } = &p { + packets_movement += 1; + } + } + } + println!("simulation took {:?}", start.elapsed()); + println!( + "packets broadcast: {packets} ({packets_movement} movement, {} other)", + packets - packets_movement + ); + + Ok(()) +} |