|
@@ -3450,69 +3450,3 @@ mod bigint_tests {
|
|
let _n: BigInt = rng.gen_bigint_range(&u, &l);
|
|
let _n: BigInt = rng.gen_bigint_range(&u, &l);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-#[cfg(test)]
|
|
|
|
-mod bench {
|
|
|
|
- extern crate test;
|
|
|
|
- use self::test::Bencher;
|
|
|
|
- use super::BigUint;
|
|
|
|
- use std::mem::replace;
|
|
|
|
-
|
|
|
|
- use {Zero, One, FromPrimitive};
|
|
|
|
-
|
|
|
|
- fn factorial(n: usize) -> BigUint {
|
|
|
|
- let mut f: BigUint = One::one();
|
|
|
|
- for i in 1..(n+1) {
|
|
|
|
- let bu: BigUint = FromPrimitive::from_usize(i).unwrap();
|
|
|
|
- f = f * bu;
|
|
|
|
- }
|
|
|
|
- f
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- fn fib(n: usize) -> BigUint {
|
|
|
|
- let mut f0: BigUint = Zero::zero();
|
|
|
|
- let mut f1: BigUint = One::one();
|
|
|
|
- for _ in 0..n {
|
|
|
|
- let f2 = f0 + &f1;
|
|
|
|
- f0 = replace(&mut f1, f2);
|
|
|
|
- }
|
|
|
|
- f0
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #[bench]
|
|
|
|
- fn factorial_100(b: &mut Bencher) {
|
|
|
|
- b.iter(|| {
|
|
|
|
- factorial(100);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #[bench]
|
|
|
|
- fn fib_100(b: &mut Bencher) {
|
|
|
|
- b.iter(|| {
|
|
|
|
- fib(100);
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #[bench]
|
|
|
|
- fn to_string(b: &mut Bencher) {
|
|
|
|
- let fac = factorial(100);
|
|
|
|
- let fib = fib(100);
|
|
|
|
- b.iter(|| {
|
|
|
|
- fac.to_string();
|
|
|
|
- });
|
|
|
|
- b.iter(|| {
|
|
|
|
- fib.to_string();
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- #[bench]
|
|
|
|
- fn shr(b: &mut Bencher) {
|
|
|
|
- let n = { let one : BigUint = One::one(); one << 1000 };
|
|
|
|
- b.iter(|| {
|
|
|
|
- let mut m = n.clone();
|
|
|
|
- for _ in 0..10 {
|
|
|
|
- m = m >> 1;
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- }
|
|
|
|
-}
|
|
|