Add benchmarks for analysis passes

This commit is contained in:
Lol3rrr
2024-11-02 03:30:28 +01:00
parent e8843540a3
commit 7e50a627f6
3 changed files with 90 additions and 0 deletions

49
Cargo.lock generated
View File

@@ -38,6 +38,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"colors-transform", "colors-transform",
"csdemo", "csdemo",
"divan",
"image", "image",
"phf", "phf",
"pretty_assertions", "pretty_assertions",
@@ -554,6 +555,7 @@ dependencies = [
"anstyle", "anstyle",
"clap_lex", "clap_lex",
"strsim", "strsim",
"terminal_size",
] ]
[[package]] [[package]]
@@ -606,6 +608,12 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "condtype"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf0a07a401f374238ab8e2f11a104d2851bf9ce711ec69804834de8af45c7af"
[[package]] [[package]]
name = "config" name = "config"
version = "0.14.1" version = "0.14.1"
@@ -927,6 +935,31 @@ dependencies = [
"subtle", "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]] [[package]]
name = "dlv-list" name = "dlv-list"
version = "0.5.2" version = "0.5.2"
@@ -2933,6 +2966,12 @@ dependencies = [
"regex-syntax 0.8.5", "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]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.6.29" version = "0.6.29"
@@ -3709,6 +3748,16 @@ dependencies = [
"windows-sys 0.59.0", "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]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.66" version = "1.0.66"

View File

@@ -17,3 +17,9 @@ phf = { version = "0.11" }
[dev-dependencies] [dev-dependencies]
pretty_assertions = { version = "1.4" } pretty_assertions = { version = "1.4" }
tracing-test = { version = "0.2", features = ["no-env-filter"] } tracing-test = { version = "0.2", features = ["no-env-filter"] }
divan = "0.1.15"
[[bench]]
name = "analysis"
harness = false

View File

@@ -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)));
}