forked from mirrors/gecko-dev
Backed out changeset 2fa2975f97e3 (bug 1396821) Backed out changeset c5895db52483 (bug 1396821) Backed out changeset 5c0ddd45f926 (bug 1396821) Backed out changeset 7c97853a85b9 (bug 1396821) Backed out changeset b61ce753f01e (bug 1396821) Backed out changeset 7ef3912feb2c (bug 1396821) --HG-- rename : third_party/rust/serde_json/LICENSE-APACHE => third_party/rust/rustc-serialize/LICENSE-APACHE rename : third_party/rust/serde_json/LICENSE-MIT => third_party/rust/rustc-serialize/LICENSE-MIT
84 lines
1.8 KiB
Rust
84 lines
1.8 KiB
Rust
#![feature(test)]
|
|
|
|
extern crate test;
|
|
extern crate rustc_serialize;
|
|
|
|
use std::string;
|
|
use rustc_serialize::json::{Json, Parser};
|
|
use test::Bencher;
|
|
|
|
#[bench]
|
|
fn bench_streaming_small(b: &mut Bencher) {
|
|
b.iter( || {
|
|
let mut parser = Parser::new(
|
|
r#"{
|
|
"a": 1.0,
|
|
"b": [
|
|
true,
|
|
"foo\nbar",
|
|
{ "c": {"d": null} }
|
|
]
|
|
}"#.chars()
|
|
);
|
|
loop {
|
|
match parser.next() {
|
|
None => return,
|
|
_ => {}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
#[bench]
|
|
fn bench_small(b: &mut Bencher) {
|
|
b.iter( || {
|
|
let _ = Json::from_str(r#"{
|
|
"a": 1.0,
|
|
"b": [
|
|
true,
|
|
"foo\nbar",
|
|
{ "c": {"d": null} }
|
|
]
|
|
}"#);
|
|
});
|
|
}
|
|
|
|
#[bench]
|
|
fn bench_decode_hex_escape(b: &mut Bencher) {
|
|
let mut src = "\"".to_string();
|
|
for _ in 0..10 {
|
|
src.push_str("\\uF975\\uf9bc\\uF9A0\\uF9C4\\uF975\\uf9bc\\uF9A0\\uF9C4");
|
|
}
|
|
src.push_str("\"");
|
|
b.iter( || {
|
|
let _ = Json::from_str(&src);
|
|
});
|
|
}
|
|
|
|
fn big_json() -> string::String {
|
|
let mut src = "[\n".to_string();
|
|
for _ in 0..500 {
|
|
src.push_str(r#"{ "a": true, "b": null, "c":3.1415, "d": "Hello world", "e": \
|
|
[1,2,3]},"#);
|
|
}
|
|
src.push_str("{}]");
|
|
return src;
|
|
}
|
|
|
|
#[bench]
|
|
fn bench_streaming_large(b: &mut Bencher) {
|
|
let src = big_json();
|
|
b.iter( || {
|
|
let mut parser = Parser::new(src.chars());
|
|
loop {
|
|
match parser.next() {
|
|
None => return,
|
|
_ => {}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
#[bench]
|
|
fn bench_large(b: &mut Bencher) {
|
|
let src = big_json();
|
|
b.iter( || { let _ = Json::from_str(&src); });
|
|
}
|