From 42ca5e0e9ced13ab745d5676dfbc1908e4e64571 Mon Sep 17 00:00:00 2001 From: Benjamin Wasty Date: Sat, 26 Jan 2019 20:16:52 +0100 Subject: [PATCH] add uint operator benchmarks (#82) --- uint/benches/bigint.rs | 120 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/uint/benches/bigint.rs b/uint/benches/bigint.rs index 513ba10..0ab541e 100644 --- a/uint/benches/bigint.rs +++ b/uint/benches/bigint.rs @@ -182,6 +182,126 @@ fn u128_mul(b: &mut Bencher) { }); } +#[bench] +fn u256_bit_and(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U256([2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) & black_box(two) + }); +} + +#[bench] +fn u512_bit_and(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U512([11707750893627518758, 17679501210898117940, 2472932874039724966, 11177683849610900539, 2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) & black_box(two) + }); +} + +#[bench] +fn u256_bit_xor(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U256([2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) ^ black_box(two) + }); +} + +#[bench] +fn u512_bit_xor(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U512([11707750893627518758, 17679501210898117940, 2472932874039724966, 11177683849610900539, 2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) ^ black_box(two) + }); +} + +#[bench] +fn u256_bit_or(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U256([2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) | black_box(two) + }); +} + +#[bench] +fn u512_bit_or(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U512([11707750893627518758, 17679501210898117940, 2472932874039724966, 11177683849610900539, 2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) | black_box(two) + }); +} + +#[bench] +fn u256_not(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + !black_box(one) + }); +} + +#[bench] +fn u512_not(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + !black_box(one) + }); +} + +#[bench] +fn u256_shl(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + black_box(one) << 128 + }); +} + +#[bench] +fn u512_shl(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + black_box(one) << 128 + }); +} + +#[bench] +fn u256_shr(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + black_box(one) >> 128 + }); +} + +#[bench] +fn u512_shr(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + b.iter(|| { + black_box(one) >> 128 + }); +} + +#[bench] +fn u256_ord(b: &mut Bencher) { + let one = U256([12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U256([2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) < black_box(two) + }); +} + +#[bench] +fn u512_ord(b: &mut Bencher) { + let one = U512([8326634216714383706, 15837136097609390493, 13004317189126203332, 7031796866963419685, 12767554894655550452, 16333049135534778834, 140317443000293558, 598963]); + let two = U512([11707750893627518758, 17679501210898117940, 2472932874039724966, 11177683849610900539, 2096410819092764509, 8483673822214032535, 36306297304129857, 3453]); + b.iter(|| { + black_box(one) < black_box(two) + }); +} + #[bench] fn u256_from_le(b: &mut Bencher) { b.iter(|| {