diff --git a/Cargo.lock b/Cargo.lock index 1b9a1e3..fa82609 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -241,6 +241,8 @@ dependencies = [ "num-traits", "oorandom", "page_size", + "plotters", + "rayon", "regex", "serde", "serde_json", @@ -248,6 +250,16 @@ dependencies = [ "walkdir", ] +[[package]] +name = "criterion-cycles-per-byte" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5396de42a52e9e5d8f67ef0702dae30451f310a9ba1c3094dcf228f0be0e54bc" +dependencies = [ + "cfg-if", + "criterion", +] + [[package]] name = "criterion-plot" version = "0.8.2" @@ -267,6 +279,25 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -559,10 +590,18 @@ name = "microfetch-asm" version = "0.4.13" [[package]] -name = "microfetch-lib" +name = "microfetch-bench" version = "0.4.13" dependencies = [ "criterion", + "criterion-cycles-per-byte", + "microfetch-lib", +] + +[[package]] +name = "microfetch-lib" +version = "0.4.13" +dependencies = [ "hotpath", "microfetch-asm", ] @@ -610,6 +649,34 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "plotters" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" + +[[package]] +name = "plotters-svg" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" +dependencies = [ + "plotters-backend", +] + [[package]] name = "prettytable-rs" version = "0.10.0" @@ -665,6 +732,26 @@ dependencies = [ "bitflags", ] +[[package]] +name = "rayon" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_users" version = "0.4.6" diff --git a/Cargo.toml b/Cargo.toml index 2cc5650..f8bd2a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = [ "crates/*", "microfetch" ] +members = [ "crates/*", "microfetch", "crates/benchmarks" ] resolver = "3" [workspace.package] @@ -13,7 +13,8 @@ version = "0.4.13" microfetch-asm = { path = "./crates/asm" } microfetch-lib = { path = "./crates/lib" } -criterion = { default-features = false, features = [ "cargo_bench_support" ], version = "0.8.2" } +criterion = { default-features = false, features = [ "cargo_bench_support" ], version = "0.8.2" } +criterion-cycles-per-byte = "0.8.0" [profile.dev] opt-level = 1 diff --git a/crates/benchmarks/Cargo.toml b/crates/benchmarks/Cargo.toml new file mode 100644 index 0000000..22fcd8e --- /dev/null +++ b/crates/benchmarks/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "microfetch-bench" +description = "Benchmarks for microfetch" +version.workspace = true +edition.workspace = true +authors.workspace = true +rust-version.workspace = true +license.workspace = true +publish = false + +[dependencies] +criterion.workspace = true +criterion-cycles-per-byte.workspace = true +microfetch-lib.workspace = true + +[[bench]] +harness = false +name = "microfetch" + +[lints] +workspace = true diff --git a/crates/lib/benches/benchmark.rs b/crates/benchmarks/benches/microfetch.rs similarity index 100% rename from crates/lib/benches/benchmark.rs rename to crates/benchmarks/benches/microfetch.rs diff --git a/crates/lib/Cargo.toml b/crates/lib/Cargo.toml index 290932b..176502a 100644 --- a/crates/lib/Cargo.toml +++ b/crates/lib/Cargo.toml @@ -16,12 +16,5 @@ microfetch-asm.workspace = true hotpath = [ "dep:hotpath", "hotpath/hotpath" ] hotpath-alloc = [ "hotpath/hotpath-alloc" ] -[dev-dependencies] -criterion.workspace = true - -[[bench]] -harness = false -name = "benchmark" - [lints] workspace = true