diff --git a/Cargo.toml b/Cargo.toml index 0a888ea..90fe574 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,15 +12,22 @@ rustc-serialize = { version = "0.3", optional = true } serde = { version = "1.0", features = ["derive"], optional = true } serde_json = { version = "1.0", optional = true } simd-json = { version = "0.10", optional = true } +simdjson-rust = { version = "0.3.0-alpha.2", optional = true } [features] default = ["performance", "all-libs", "all-files"] -all-libs = ["lib-serde", "lib-rustc-serialize", "lib-simd-json"] +all-libs = [ + "lib-serde", + # lib-rustc-serialize", + "lib-simd-json", + "lib-simdjson-rust" +] all-files = ["file-canada", "file-citm-catalog", "file-twitter"] performance = ["parse-dom", "stringify-dom", "parse-struct", "stringify-struct"] lib-serde = ["serde", "serde_json"] lib-simd-json = ["serde", "simd-json"] lib-rustc-serialize = ["rustc-serialize"] +lib-simdjson-rust = ["simdjson-rust"] file-canada = [] file-citm-catalog = [] file-twitter = [] diff --git a/src/main.rs b/src/main.rs index 4cd8c65..636d622 100644 --- a/src/main.rs +++ b/src/main.rs @@ -196,6 +196,40 @@ macro_rules! bench_file_simd_json { } } +#[cfg(feature = "lib-simdjson-rust")] +macro_rules! bench_file_simdjson_rust { + ( + path: $path:expr, + structure: $structure:ty, + ) => { + let num_trials = num_trials().unwrap_or(256); + + print!("{:22}", $path); + io::stdout().flush().unwrap(); + + let contents = simdjson_rust::padded_string::load_padded_string($path).unwrap(); + + #[cfg(feature = "parse-dom")] + { + use timer::Benchmark; + let mut benchmark = Benchmark::new(); + let mut parser = simdjson_rust::dom::Parser::default(); + for _ in 0..num_trials { + let mut timer = benchmark.start(); + let _parsed = parser.parse(&contents).unwrap(); + timer.stop(); + } + let dur = benchmark.min_elapsed(); + print!("{:6} MB/s", throughput(dur, contents.len())); + io::stdout().flush().unwrap(); + } + #[cfg(not(feature = "parse-dom"))] + print!(" "); + + println!(); + }; +} + fn main() { print!("{:>35}{:>24}", "DOM", "STRUCT"); @@ -226,6 +260,12 @@ fn main() { name: "simd-json", bench: bench_file_simd_json, } + + #[cfg(feature = "lib-simdjson-rust")] + bench! { + name: "simdjson-rust", + bench: bench_file_simdjson_rust, + } } #[cfg(all(