From 2d2c85c18a3402b6d5bf39411282f42a155e3a8e Mon Sep 17 00:00:00 2001 From: Pavel Perestoronin Date: Mon, 8 May 2023 22:43:28 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Add=20the=20benchmark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/wotbreplay-parser.iml | 1 + Cargo.toml | 5 +++++ README.md | 2 +- benches/data.rs | 20 ++++++++++++++++++ ...lay => 20221203_player_results.wotbreplay} | Bin ...lay => 20221203_victory_points.wotbreplay} | Bin ...0230429_0126__helaas_pindakaas.wotbreplay} | Bin ... 20230429_1682194799_malinovka.wotbreplay} | Bin ...0230503_0027__helaas_pindakaas.wotbreplay} | Bin ...play => 20230503_training_room.wotbreplay} | Bin tests/battle_results.rs | 18 +++++++++------- tests/data.rs | 17 ++++++--------- tests/meta.rs | 3 ++- 13 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 benches/data.rs rename replays/{player_results.wotbreplay => 20221203_player_results.wotbreplay} (100%) rename replays/{victory_points.wotbreplay => 20221203_victory_points.wotbreplay} (100%) rename replays/{20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay => 20230429_0126__helaas_pindakaas.wotbreplay} (100%) rename replays/{1682194799_malinovka_d48e8c0e45e2e2fcaf75cb139492575e.wotbreplay => 20230429_1682194799_malinovka.wotbreplay} (100%) rename replays/{20230503_0027__helaas_pindakaas_A140_ASTRON_REX_105_2319058483532631656.wotbreplay => 20230503_0027__helaas_pindakaas.wotbreplay} (100%) rename replays/{training_room.wotbreplay => 20230503_training_room.wotbreplay} (100%) diff --git a/.idea/wotbreplay-parser.iml b/.idea/wotbreplay-parser.iml index 227e58a..79ac256 100644 --- a/.idea/wotbreplay-parser.iml +++ b/.idea/wotbreplay-parser.iml @@ -4,6 +4,7 @@ + diff --git a/Cargo.toml b/Cargo.toml index b834ca1..c6e02c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,3 +28,8 @@ zip = { version = "0.6.3", default-features = false, features = ["deflate"] } [dev-dependencies] anyhow = "1.0.66" +criterion = "0.4.0" + +[[bench]] +name = "data" +harness = false diff --git a/README.md b/README.md index fe12c24..7535927 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ use wotbreplay_parser::models::battle_results::TeamNumber; use wotbreplay_parser::replay::Replay; fn main() -> Result<()> { - let battle_results = Replay::open(File::open("replays/player_results.wotbreplay")?)?.read_battle_results()?; + let battle_results = Replay::open(File::open("replays/20221203_player_results.wotbreplay")?)?.read_battle_results()?; assert_eq!(battle_results.timestamp, 1670083956); assert_eq!(battle_results.players.len(), 14); diff --git a/benches/data.rs b/benches/data.rs new file mode 100644 index 0000000..92ed08d --- /dev/null +++ b/benches/data.rs @@ -0,0 +1,20 @@ +use std::fs::File; + +use criterion::{criterion_group, criterion_main, Criterion}; +use wotbreplay_parser::replay::Replay; + +fn bench_read_data(criterion: &mut Criterion) { + let mut group = criterion.benchmark_group("read_data"); + for path in [ + "replays/20230429_0126__helaas_pindakaas.wotbreplay", + "replays/20230503_0027__helaas_pindakaas.wotbreplay", + "replays/20230429_1682194799_malinovka.wotbreplay", + ] { + let mut replay = Replay::open(File::open(path).unwrap()).unwrap(); + group.bench_function(path, |bencher| bencher.iter(|| replay.read_data().unwrap())); + } + group.finish(); +} + +criterion_group!(benches, bench_read_data); +criterion_main!(benches); diff --git a/replays/player_results.wotbreplay b/replays/20221203_player_results.wotbreplay similarity index 100% rename from replays/player_results.wotbreplay rename to replays/20221203_player_results.wotbreplay diff --git a/replays/victory_points.wotbreplay b/replays/20221203_victory_points.wotbreplay similarity index 100% rename from replays/victory_points.wotbreplay rename to replays/20221203_victory_points.wotbreplay diff --git a/replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay b/replays/20230429_0126__helaas_pindakaas.wotbreplay similarity index 100% rename from replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay rename to replays/20230429_0126__helaas_pindakaas.wotbreplay diff --git a/replays/1682194799_malinovka_d48e8c0e45e2e2fcaf75cb139492575e.wotbreplay b/replays/20230429_1682194799_malinovka.wotbreplay similarity index 100% rename from replays/1682194799_malinovka_d48e8c0e45e2e2fcaf75cb139492575e.wotbreplay rename to replays/20230429_1682194799_malinovka.wotbreplay diff --git a/replays/20230503_0027__helaas_pindakaas_A140_ASTRON_REX_105_2319058483532631656.wotbreplay b/replays/20230503_0027__helaas_pindakaas.wotbreplay similarity index 100% rename from replays/20230503_0027__helaas_pindakaas_A140_ASTRON_REX_105_2319058483532631656.wotbreplay rename to replays/20230503_0027__helaas_pindakaas.wotbreplay diff --git a/replays/training_room.wotbreplay b/replays/20230503_training_room.wotbreplay similarity index 100% rename from replays/training_room.wotbreplay rename to replays/20230503_training_room.wotbreplay diff --git a/tests/battle_results.rs b/tests/battle_results.rs index afdb3a7..984a5c2 100644 --- a/tests/battle_results.rs +++ b/tests/battle_results.rs @@ -6,8 +6,9 @@ use wotbreplay_parser::replay::Replay; #[test] fn player_results_ok() -> Result<()> { - let battle_results_dat = Replay::open(File::open("replays/player_results.wotbreplay")?)? - .read_battle_results_dat()?; + let battle_results_dat = + Replay::open(File::open("replays/20221203_player_results.wotbreplay")?)? + .read_battle_results_dat()?; assert_eq!(battle_results_dat.arena_unique_id, 1661909200500084); let battle_results: BattleResults = battle_results_dat.try_into()?; @@ -80,8 +81,8 @@ fn player_results_ok() -> Result<()> { #[test] fn player_info_ok() -> Result<()> { - let battle_results = - Replay::open(File::open("replays/player_results.wotbreplay")?)?.read_battle_results()?; + let battle_results = Replay::open(File::open("replays/20221203_player_results.wotbreplay")?)? + .read_battle_results()?; assert_eq!(battle_results.players[1].info.clan_tag.as_deref(), Some("AN0NY")); @@ -103,8 +104,8 @@ fn player_info_ok() -> Result<()> { #[test] fn victory_points_ok() -> Result<()> { - let battle_results = - Replay::open(File::open("replays/victory_points.wotbreplay")?)?.read_battle_results()?; + let battle_results = Replay::open(File::open("replays/20221203_victory_points.wotbreplay")?)? + .read_battle_results()?; assert_eq!(battle_results.player_results[1].info.victory_points_seized, 40); assert_eq!(battle_results.player_results[1].info.victory_points_earned, 40); @@ -120,8 +121,9 @@ fn victory_points_ok() -> Result<()> { #[test] fn draw_ok() -> Result<()> { - let battle_results = Replay::open(File::open("replays/20230503_0027__helaas_pindakaas_A140_ASTRON_REX_105_2319058483532631656.wotbreplay")?)? - .read_battle_results()?; + let battle_results = + Replay::open(File::open("replays/20230503_0027__helaas_pindakaas.wotbreplay")?)? + .read_battle_results()?; assert_eq!(battle_results.winner_team_number, None); Ok(()) } diff --git a/tests/data.rs b/tests/data.rs index b9be8a2..62aa9f6 100644 --- a/tests/data.rs +++ b/tests/data.rs @@ -7,9 +7,8 @@ use wotbreplay_parser::replay::Replay; #[test] fn parse_ok() -> Result<()> { - let mut replay = Replay::open(File::open( - "replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay", - )?)?; + let mut replay = + Replay::open(File::open("replays/20230429_0126__helaas_pindakaas.wotbreplay")?)?; let data = replay.read_data()?; assert_eq!(data.client_version, "9.8.5_apple"); @@ -20,9 +19,8 @@ fn parse_ok() -> Result<()> { #[test] fn base_player_create_ok() -> Result<()> { - let mut replay = Replay::open(File::open( - "replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay", - )?)?; + let mut replay = + Replay::open(File::open("replays/20230429_0126__helaas_pindakaas.wotbreplay")?)?; let data = replay.read_data()?; let (author_nickname, arena_unique_id, arena_type_id, arguments) = data @@ -68,9 +66,8 @@ fn base_player_create_ok() -> Result<()> { #[test] fn update_arena_ok() -> Result<()> { - let mut replay = Replay::open(File::open( - "replays/20230429_0126__helaas_pindakaas_A140_ASTRON_REX_105_16114615898101270.wotbreplay", - )?)?; + let mut replay = + Replay::open(File::open("replays/20230429_0126__helaas_pindakaas.wotbreplay")?)?; let data = replay.read_data()?; let players = data @@ -97,7 +94,7 @@ fn update_arena_ok() -> Result<()> { #[test] fn training_room_ok() -> Result<()> { - let mut replay = Replay::open(File::open("replays/training_room.wotbreplay")?)?; + let mut replay = Replay::open(File::open("replays/20230503_training_room.wotbreplay")?)?; replay.read_data()?; Ok(()) } diff --git a/tests/meta.rs b/tests/meta.rs index 097ea33..92b8667 100644 --- a/tests/meta.rs +++ b/tests/meta.rs @@ -7,7 +7,8 @@ use wotbreplay_parser::replay::Replay; #[test] fn meta_ok() -> Result<()> { - let meta = Replay::open(File::open("replays/player_results.wotbreplay")?)?.read_meta()?; + let meta = + Replay::open(File::open("replays/20221203_player_results.wotbreplay")?)?.read_meta()?; assert_eq!(meta.player_name, "zeekrab"); assert_eq!(meta.arena_unique_id, "1661909200500084");