Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
96
third-party/vendor/swc_common/benches/serde.rs
vendored
Normal file
96
third-party/vendor/swc_common/benches/serde.rs
vendored
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
#![cfg_attr(not(feature = "serde-impl"), allow(unused))]
|
||||
|
||||
use ast_node::ast_node;
|
||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use swc_common::{Span, DUMMY_SP};
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct SerdeStr {
|
||||
span: Span,
|
||||
value: String,
|
||||
}
|
||||
|
||||
#[ast_node("String")]
|
||||
pub struct Str {
|
||||
span: Span,
|
||||
value: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct SerdeNum {
|
||||
span: Span,
|
||||
value: u64,
|
||||
}
|
||||
|
||||
#[ast_node("Number")]
|
||||
pub struct Num {
|
||||
span: Span,
|
||||
value: u64,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
#[serde(tag = "type")]
|
||||
pub enum Serde {
|
||||
Number(SerdeNum),
|
||||
String(SerdeStr),
|
||||
}
|
||||
|
||||
#[ast_node]
|
||||
pub enum AstNode {
|
||||
#[tag("Number")]
|
||||
Number(Num),
|
||||
#[tag("String")]
|
||||
String(Str),
|
||||
}
|
||||
|
||||
fn bench_serde(c: &mut Criterion) {
|
||||
let src = Serde::String(SerdeStr {
|
||||
span: DUMMY_SP,
|
||||
value: String::from("perf-diff"),
|
||||
});
|
||||
|
||||
c.bench_function("serialization of serde", |b| {
|
||||
b.iter(|| black_box(serde_json::to_string(&src).unwrap()));
|
||||
});
|
||||
c.bench_function("deserialization of serde", |b| {
|
||||
let src = serde_json::to_string(&Serde::String(SerdeStr {
|
||||
span: DUMMY_SP,
|
||||
value: String::from("perf-diff"),
|
||||
}))
|
||||
.unwrap();
|
||||
println!("{}", src);
|
||||
|
||||
b.iter(|| black_box(serde_json::to_string(&src).unwrap()));
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_ast_node(c: &mut Criterion) {
|
||||
#[cfg(feature = "serde-impl")]
|
||||
c.bench_function("serialization of ast node", |b| {
|
||||
let src = AstNode::String(Str {
|
||||
span: DUMMY_SP,
|
||||
value: String::from("perf-diff"),
|
||||
});
|
||||
|
||||
b.iter(|| black_box(serde_json::to_string(&src).unwrap()));
|
||||
});
|
||||
#[cfg(feature = "serde-impl")]
|
||||
c.bench_function("deserialization of ast node", |b| {
|
||||
let src = serde_json::to_string(&AstNode::String(Str {
|
||||
span: DUMMY_SP,
|
||||
value: String::from("perf-diff"),
|
||||
}))
|
||||
.unwrap();
|
||||
println!("{}", src);
|
||||
|
||||
b.iter(|| {
|
||||
let t: AstNode = serde_json::from_str(&src).unwrap();
|
||||
|
||||
black_box(t);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_ast_node, bench_serde);
|
||||
criterion_main!(benches);
|
||||
Loading…
Add table
Add a link
Reference in a new issue