mirror of
https://github.com/italicsjenga/valence.git
synced 2024-12-24 06:51:30 +11:00
98 lines
2.5 KiB
Rust
98 lines
2.5 KiB
Rust
|
use std::time::Duration;
|
||
|
|
||
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||
|
use valence_protocol::block::{PropName, PropValue};
|
||
|
use valence_protocol::{BlockKind, BlockState, ItemKind};
|
||
|
|
||
|
criterion_group! {
|
||
|
name = benches;
|
||
|
config = Criterion::default()
|
||
|
.measurement_time(Duration::from_secs(3));
|
||
|
targets = blocks
|
||
|
}
|
||
|
criterion_main!(benches);
|
||
|
|
||
|
fn blocks(c: &mut Criterion) {
|
||
|
let states = BlockKind::ALL.map(BlockKind::to_state);
|
||
|
|
||
|
c.bench_function("BlockState::from_kind", |b| {
|
||
|
b.iter(|| {
|
||
|
for kind in black_box(BlockKind::ALL) {
|
||
|
black_box(BlockState::from_kind(kind));
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::to_kind", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.to_kind());
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::get", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.get(PropName::Note));
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::set", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.set(PropName::Note, PropValue::Didgeridoo));
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::is_liquid", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.is_liquid());
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::is_opaque", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.is_opaque());
|
||
|
}
|
||
|
})
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::is_replaceable", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.is_replaceable());
|
||
|
}
|
||
|
})
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockState::luminance", |b| {
|
||
|
b.iter(|| {
|
||
|
for state in black_box(states) {
|
||
|
black_box(state.luminance());
|
||
|
}
|
||
|
})
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockKind::to_item_kind", |b| {
|
||
|
b.iter(|| {
|
||
|
for kind in black_box(BlockKind::ALL) {
|
||
|
black_box(kind.to_item_kind());
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
c.bench_function("BlockKind::from_item_kind", |b| {
|
||
|
b.iter(|| {
|
||
|
for kind in black_box(ItemKind::ALL) {
|
||
|
black_box(BlockKind::from_item_kind(kind));
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|