浏览代码

utils: add Fp encode/decode benchmark

Lennart Braun 2 年之前
父节点
当前提交
e4fb2f07fb
共有 2 个文件被更改,包括 36 次插入0 次删除
  1. 4 0
      utils/Cargo.toml
  2. 32 0
      utils/benches/field.rs

+ 4 - 0
utils/Cargo.toml

@@ -18,6 +18,10 @@ rand_chacha = "0.3.1"
 [dev-dependencies]
 criterion = "0.4.0"
 
+[[bench]]
+name = "field"
+harness = false
+
 [[bench]]
 name = "permutation"
 harness = false

+ 32 - 0
utils/benches/field.rs

@@ -0,0 +1,32 @@
+use bincode;
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use ff::Field;
+use rand::thread_rng;
+use utils::field::Fp;
+
+pub fn bench_encode(c: &mut Criterion) {
+    c.bench_function("Fp::encode", |b| {
+        let x = Fp::random(thread_rng());
+        b.iter(|| {
+            black_box(
+                bincode::encode_to_vec(x, bincode::config::standard()).expect("encode failed"),
+            )
+        });
+    });
+}
+
+pub fn bench_decode(c: &mut Criterion) {
+    c.bench_function("Fp::decode", |b| {
+        let x = Fp::random(thread_rng());
+        let bytes = bincode::encode_to_vec(x, bincode::config::standard()).expect("encode failed");
+        b.iter(|| {
+            black_box(
+                bincode::decode_from_slice::<Fp, _>(&bytes, bincode::config::standard())
+                    .expect("decode failed"),
+            )
+        });
+    });
+}
+
+criterion_group!(benches, bench_encode, bench_decode);
+criterion_main!(benches);