nameaccumulator.rs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
  2. use rand::{thread_rng, Rng};
  3. use wnfs_nameaccumulator::{AccumulatorSetup, BigNumDig, BigNumRug, NameAccumulator, NameSegment};
  4. fn name_segment_from_digest(c: &mut Criterion) {
  5. c.bench_function("NameSegment::<BigNumDig>::new_hashed", |b| {
  6. b.iter_batched(
  7. || thread_rng().gen::<[u8; 32]>(),
  8. |sth| NameSegment::<BigNumDig>::new_hashed("wnfs benchmarks", sth),
  9. BatchSize::SmallInput,
  10. );
  11. });
  12. c.bench_function("NameSegment::<BigNumRug>::new_hashed", |b| {
  13. b.iter_batched(
  14. || thread_rng().gen::<[u8; 32]>(),
  15. |sth| NameSegment::<BigNumRug>::new_hashed("wnfs benchmarks", sth),
  16. BatchSize::SmallInput,
  17. );
  18. });
  19. }
  20. fn name_segment_rng(c: &mut Criterion) {
  21. c.bench_function("NameSegment::<BigNumDig>::new(rng)", |b| {
  22. b.iter(|| NameSegment::<BigNumDig>::new(&mut thread_rng()));
  23. });
  24. c.bench_function("NameSegment::<BigNumRug>::new(rng)", |b| {
  25. b.iter(|| NameSegment::<BigNumRug>::new(&mut thread_rng()));
  26. });
  27. }
  28. fn name_accumulator_add(c: &mut Criterion) {
  29. let setup = &AccumulatorSetup::<BigNumDig>::from_rsa_2048(&mut thread_rng());
  30. c.bench_function("NameAccumulator::<BigNumDig>::add", |b| {
  31. b.iter_batched(
  32. || NameSegment::<BigNumDig>::new(&mut thread_rng()),
  33. |segment| NameAccumulator::<BigNumDig>::empty(setup).add(Some(&segment), setup),
  34. BatchSize::SmallInput,
  35. )
  36. });
  37. let setup = &AccumulatorSetup::<BigNumRug>::from_rsa_2048(&mut thread_rng());
  38. c.bench_function("NameAccumulator::<BigNumRug>::add", |b| {
  39. b.iter_batched(
  40. || NameSegment::<BigNumRug>::new(&mut thread_rng()),
  41. |segment| NameAccumulator::<BigNumRug>::empty(setup).add(Some(&segment), setup),
  42. BatchSize::SmallInput,
  43. )
  44. });
  45. }
  46. fn name_accumulator_serialize(c: &mut Criterion) {
  47. let setup = &AccumulatorSetup::<BigNumDig>::from_rsa_2048(&mut thread_rng());
  48. c.bench_function("NameAccumulator::<BigNumDig> serialization", |b| {
  49. b.iter_batched(
  50. || {
  51. let segment = NameSegment::<BigNumDig>::new(&mut thread_rng());
  52. let mut name = NameAccumulator::<BigNumDig>::empty(setup);
  53. name.add(Some(&segment), setup);
  54. name
  55. },
  56. |name| name.into_bytes(),
  57. BatchSize::SmallInput,
  58. )
  59. });
  60. let setup = &AccumulatorSetup::<BigNumRug>::from_rsa_2048(&mut thread_rng());
  61. c.bench_function("NameAccumulator::<BigNumRug> serialization", |b| {
  62. b.iter_batched(
  63. || {
  64. let segment = NameSegment::<BigNumRug>::new(&mut thread_rng());
  65. let mut name = NameAccumulator::<BigNumRug>::empty(setup);
  66. name.add(Some(&segment), setup);
  67. name
  68. },
  69. |name| name.into_bytes(),
  70. BatchSize::SmallInput,
  71. )
  72. });
  73. }
  74. criterion_group!(
  75. benches,
  76. name_segment_from_digest,
  77. name_segment_rng,
  78. name_accumulator_add,
  79. name_accumulator_serialize,
  80. );
  81. criterion_main!(benches);