From 7e50a627f61bc6dfb6812d2c4cfb65f541fab1c6 Mon Sep 17 00:00:00 2001 From: Lol3rrr Date: Sat, 2 Nov 2024 03:30:28 +0100 Subject: [PATCH] Add benchmarks for analysis passes --- Cargo.lock | 49 ++++++++++++++++++++++++++++++++++++ analysis/Cargo.toml | 6 +++++ analysis/benches/analysis.rs | 35 ++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 analysis/benches/analysis.rs diff --git a/Cargo.lock b/Cargo.lock index c749c51..3b82f8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,7 @@ version = "0.1.0" dependencies = [ "colors-transform", "csdemo", + "divan", "image", "phf", "pretty_assertions", @@ -554,6 +555,7 @@ dependencies = [ "anstyle", "clap_lex", "strsim", + "terminal_size", ] [[package]] @@ -606,6 +608,12 @@ dependencies = [ "serde", ] +[[package]] +name = "condtype" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af" + [[package]] name = "config" version = "0.14.1" @@ -927,6 +935,31 @@ dependencies = [ "subtle", ] +[[package]] +name = "divan" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e05d17bd4ff1c1e7998ed4623d2efd91f72f1e24141ac33aac9377974270e1f" +dependencies = [ + "cfg-if", + "clap", + "condtype", + "divan-macros", + "libc", + "regex-lite", +] + +[[package]] +name = "divan-macros" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b4464d46ce68bfc7cb76389248c7c254def7baca8bece0693b02b83842c4c88" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "dlv-list" version = "0.5.2" @@ -2933,6 +2966,12 @@ dependencies = [ "regex-syntax 0.8.5", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -3709,6 +3748,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "terminal_size" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + [[package]] name = "thiserror" version = "1.0.66" diff --git a/analysis/Cargo.toml b/analysis/Cargo.toml index d0558bc..227baab 100644 --- a/analysis/Cargo.toml +++ b/analysis/Cargo.toml @@ -17,3 +17,9 @@ phf = { version = "0.11" } [dev-dependencies] pretty_assertions = { version = "1.4" } tracing-test = { version = "0.2", features = ["no-env-filter"] } + +divan = "0.1.15" + +[[bench]] +name = "analysis" +harness = false diff --git a/analysis/benches/analysis.rs b/analysis/benches/analysis.rs new file mode 100644 index 0000000..70fd819 --- /dev/null +++ b/analysis/benches/analysis.rs @@ -0,0 +1,35 @@ +fn main() { + divan::main(); +} + +#[divan::bench(args = ["dust2.dem", "inferno.dem", "nuke.dem"])] +fn heatmap(bencher: divan::Bencher, file: &str) { + let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../testfiles/") + .join(file); + let data = std::fs::read(path).unwrap(); + + let config = analysis::heatmap::Config { cell_size: 2.0 }; + + bencher.bench(|| analysis::heatmap::parse(divan::black_box(&config), divan::black_box(&data))); +} + +#[divan::bench(args = ["dust2.dem", "inferno.dem", "nuke.dem"])] +fn perround(bencher: divan::Bencher, file: &str) { + let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../testfiles/") + .join(file); + let data = std::fs::read(path).unwrap(); + + bencher.bench(|| analysis::perround::parse(divan::black_box(&data))); +} + +#[divan::bench(args = ["dust2.dem", "inferno.dem", "nuke.dem"])] +fn endofgame(bencher: divan::Bencher, file: &str) { + let path = std::path::Path::new(env!("CARGO_MANIFEST_DIR")) + .join("../testfiles/") + .join(file); + let data = std::fs::read(path).unwrap(); + + bencher.bench(|| analysis::endofgame::parse(divan::black_box(&data))); +}