Skip to content

Commit 558a17c

Browse files
committed
perf: Update benchmarks code
1 parent 108eadd commit 558a17c

File tree

2 files changed

+40
-22
lines changed

2 files changed

+40
-22
lines changed

Cargo.toml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,14 @@ harness = false
2727
serde = { version = "1.0", default-features = false, optional = true }
2828

2929
[dev-dependencies]
30-
criterion = "0.3"
31-
rustc-hex = "2.1"
32-
faster-hex = "0.5"
33-
version-sync = "0.9"
34-
pretty_assertions = "0.6"
35-
serde = { version = "1.0", features = ["derive"] }
36-
serde_json = "1.0"
30+
criterion = "0.5.1"
31+
data-encoding = "2.6.0"
32+
rustc-hex = "2.1.0"
33+
faster-hex = "0.10.0"
34+
version-sync = "0.9.5"
35+
pretty_assertions = "1.4.1"
36+
serde = { version = "1.0.215", features = ["derive"] }
37+
serde_json = "1.0.133"
3738

3839
[package.metadata.docs.rs]
3940
all-features = true

benches/hex.rs

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,77 @@
1-
use criterion::{criterion_group, criterion_main, Criterion};
1+
use criterion::{criterion_group, criterion_main, Criterion, Throughput};
22
use rustc_hex::{FromHex, ToHex};
33

44
const DATA: &[u8] = include_bytes!("../src/lib.rs");
55

66
fn bench_encode(c: &mut Criterion) {
7-
c.bench_function("hex_encode", |b| b.iter(|| hex::encode(DATA)));
7+
let mut group = c.benchmark_group("encode");
8+
group.throughput(Throughput::Bytes(DATA.len() as u64));
89

9-
c.bench_function("rustc_hex_encode", |b| b.iter(|| DATA.to_hex::<String>()));
10+
group.bench_function("hex", |b| b.iter(|| hex::encode(DATA)));
1011

11-
c.bench_function("faster_hex_encode", |b| {
12-
b.iter(|| faster_hex::hex_string(DATA).unwrap())
13-
});
12+
group.bench_function("rustc_hex", |b| b.iter(|| DATA.to_hex::<String>()));
13+
14+
group.bench_function("faster_hex", |b| b.iter(|| faster_hex::hex_string(DATA)));
1415

15-
c.bench_function("faster_hex_encode_fallback", |b| {
16+
group.bench_function("faster_hex/fallback", |b| {
1617
b.iter(|| {
1718
let mut dst = vec![0; DATA.len() * 2];
1819
faster_hex::hex_encode_fallback(DATA, &mut dst);
1920
dst
2021
})
2122
});
23+
24+
group.bench_function("data_encoding", |b| {
25+
b.iter(|| data_encoding::HEXLOWER.encode(DATA))
26+
});
27+
28+
group.finish()
2229
}
2330

2431
fn bench_decode(c: &mut Criterion) {
25-
c.bench_function("hex_decode", |b| {
32+
let mut group = c.benchmark_group("decode");
33+
group.throughput(Throughput::Bytes(DATA.len() as u64));
34+
35+
group.bench_function("hex", |b| {
2636
let hex = hex::encode(DATA);
2737
b.iter(|| hex::decode(&hex).unwrap())
2838
});
2939

30-
c.bench_function("rustc_hex_decode", |b| {
40+
group.bench_function("rustc_hex", |b| {
3141
let hex = DATA.to_hex::<String>();
3242
b.iter(|| hex.from_hex::<Vec<u8>>().unwrap())
3343
});
3444

35-
c.bench_function("faster_hex_decode", move |b| {
36-
let hex = faster_hex::hex_string(DATA).unwrap();
45+
group.bench_function("faster_hex", move |b| {
46+
let hex = faster_hex::hex_string(DATA);
3747
let len = DATA.len();
3848
let mut dst = vec![0; len];
3949

4050
b.iter(|| faster_hex::hex_decode(hex.as_bytes(), &mut dst).unwrap())
4151
});
4252

43-
c.bench_function("faster_hex_decode_unchecked", |b| {
44-
let hex = faster_hex::hex_string(DATA).unwrap();
53+
group.bench_function("faster_hex/unchecked", |b| {
54+
let hex = faster_hex::hex_string(DATA);
4555
let len = DATA.len();
4656
let mut dst = vec![0; len];
4757

4858
b.iter(|| faster_hex::hex_decode_unchecked(hex.as_bytes(), &mut dst))
4959
});
5060

51-
c.bench_function("faster_hex_decode_fallback", |b| {
52-
let hex = faster_hex::hex_string(DATA).unwrap();
61+
group.bench_function("faster_hex/fallback", |b| {
62+
let hex = faster_hex::hex_string(DATA);
5363
let len = DATA.len();
5464
let mut dst = vec![0; len];
5565

5666
b.iter(|| faster_hex::hex_decode_fallback(hex.as_bytes(), &mut dst))
5767
});
68+
69+
group.bench_function("data_encoding", |b| {
70+
let hex = data_encoding::HEXLOWER.encode(DATA);
71+
b.iter(|| data_encoding::HEXLOWER.decode(hex.as_bytes()).unwrap())
72+
});
73+
74+
group.finish()
5875
}
5976

6077
criterion_group!(benches, bench_encode, bench_decode);

0 commit comments

Comments
 (0)