From a7955c3d0f6a1fd0f8d77256ed326259fab3e932 Mon Sep 17 00:00:00 2001 From: koalp Date: Sun, 20 Sep 2020 23:59:48 +0200 Subject: [PATCH] =?UTF-8?q?feat:=C2=A0move=20to=20library,=20add=20benchma?= =?UTF-8?q?rk=20and=20example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Cargo.lock | 187 --------- Cargo.toml | 7 + benches/my_benchmark.rs | 12 + src/main.rs => examples/parse_python_type.rs | 11 +- flamegraph.svg | 419 +++++++++++++++++++ perf.data | Bin 0 -> 110668 bytes src/lib.rs | 6 + 8 files changed, 447 insertions(+), 196 deletions(-) delete mode 100644 Cargo.lock create mode 100644 benches/my_benchmark.rs rename src/main.rs => examples/parse_python_type.rs (82%) create mode 100644 flamegraph.svg create mode 100644 perf.data create mode 100644 src/lib.rs diff --git a/.gitignore b/.gitignore index eb5a316..a9d37c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ target +Cargo.lock diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index e6358f8..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,187 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "anyhow" -version = "1.0.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b602bfe940d21c130f3895acd65221e8a61270debe89d628b9cb4e3ccb8569b" - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "parsing" -version = "0.1.0" -dependencies = [ - "anyhow", - "pest", - "pest_derive", -] - -[[package]] -name = "pest" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" -dependencies = [ - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d" -dependencies = [ - "maplit", - "pest", - "sha-1", -] - -[[package]] -name = "proc-macro2" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e28516df94f3dd551a587da5357459d9b36d945a7c37c3557928c1c2ff2a2c" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "sha-1" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "syn" -version = "1.0.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690e3e9f692504b941dc6c3b188fd28df054f7fb8469ab40680df52fdcc842b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "ucd-trie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" diff --git a/Cargo.toml b/Cargo.toml index 239098a..500109b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,10 @@ edition = "2018" pest = "2.1.3" pest_derive = "2.1.0" anyhow = "1.0.32" + +[dev-dependencies] +criterion = "0.3" + +[[bench]] +name = "my_benchmark" +harness = false diff --git a/benches/my_benchmark.rs b/benches/my_benchmark.rs new file mode 100644 index 0000000..5a3e2cb --- /dev/null +++ b/benches/my_benchmark.rs @@ -0,0 +1,12 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; + +use parsing::grammar::parse; + +pub fn criterion_benchmark(c: &mut Criterion) { + c.bench_function("parse type", |b| { + b.iter(|| parse("List[Dict[List[Dict[int, int]], str]]".into())) + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); diff --git a/src/main.rs b/examples/parse_python_type.rs similarity index 82% rename from src/main.rs rename to examples/parse_python_type.rs index b1f1f16..b50f296 100644 --- a/src/main.rs +++ b/examples/parse_python_type.rs @@ -1,16 +1,9 @@ -mod grammar; -mod nested_type; - -use grammar::parse; -use nested_type::Type; use ::std::env; +use parsing::grammar::parse; +use parsing::nested_type::Type; use ::anyhow::Result; -#[macro_use] -extern crate pest_derive; -extern crate pest; - fn main() -> Result<()> { let a = Type { repr: "NestedType".into(), diff --git a/flamegraph.svg b/flamegraph.svg new file mode 100644 index 0000000..cf0c6c0 --- /dev/null +++ b/flamegraph.svg @@ -0,0 +1,419 @@ +Flame Graph Reset ZoomSearch [unknown] (1 samples, 9.09%)[unknown]_IO_flush_all_lockp (1 samples, 9.09%)_IO_flush_all..__GI___tunables_init (1 samples, 9.09%)__GI___tunabl..__rtld_malloc_init_real (1 samples, 9.09%)__rtld_malloc..lookup_malloc_symbol (1 samples, 9.09%)lookup_malloc.._dl_lookup_symbol_x (1 samples, 9.09%)_dl_lookup_sy..do_lookup_x (1 samples, 9.09%)do_lookup_xall (11 samples, 100%)parse_python_ty (11 samples, 100.00%)parse_python_ty_start (10 samples, 90.91%)_start_dl_start (4 samples, 36.36%)_dl_start_dl_sysdep_start (3 samples, 27.27%)_dl_sysdep_startdl_main (2 samples, 18.18%)dl_main_dl_map_object_deps (1 samples, 9.09%)_dl_map_objec.._dl_catch_exception (1 samples, 9.09%)_dl_catch_exc..openaux (1 samples, 9.09%)openaux_dl_map_object (1 samples, 9.09%)_dl_map_objectopen_path (1 samples, 9.09%)open_path \ No newline at end of file diff --git a/perf.data b/perf.data new file mode 100644 index 0000000000000000000000000000000000000000..fb96a3194db711589dabf866b83832d0e75f2ebf GIT binary patch literal 110668 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 QIyZM2fA2L{{pl3>e@4VM)c^nh literal 0 HcmV?d00001 diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..57cd3ad --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,6 @@ +#[macro_use] +extern crate pest_derive; +extern crate pest; + +pub mod grammar; +pub mod nested_type;