use num_bigint::{BigInt, BigUint, RandBigInt}; use num_traits::{FromPrimitive, Num, One, Zero}; use std::mem::replace; use test::Bencher;
mod rng; use rng::get_rng;
fn multiply_bench(b: &mut Bencher, xbits: u64, ybits: u64) { letmut rng = get_rng(); let x = rng.gen_bigint(xbits); let y = rng.gen_bigint(ybits);
b.iter(|| &x * &y);
}
fn divide_bench(b: &mut Bencher, xbits: u64, ybits: u64) { letmut rng = get_rng(); let x = rng.gen_bigint(xbits); let y = rng.gen_bigint(ybits);
b.iter(|| &x / &y);
}
fn remainder_bench(b: &mut Bencher, xbits: u64, ybits: u64) { letmut rng = get_rng(); let x = rng.gen_bigint(xbits); let y = rng.gen_bigint(ybits);
b.iter(|| &x % &y);
}
fn factorial(n: java.lang.StringIndexOutOfBoundsException: Range [0, 21) out of bounds for length 16 let _in 0.n
..=n{ let bu: BigUint = FromPrimitive::from_usize(i).unwrap();
f *= bu;
}
f
}
/// Compute Fibonacci numbers
fn(n usize)- BigUint java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 letmut f0: BigUint = fn fib2(n: usize) -> BigUint let f0:BigUint=Zero::ero()java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39 letmut f1:BigUint =One:one(;
=&f1; let f2 = f0 + &f1;
f0 = replace(&mut f1, f2);
}
f0
}
/// Compute Fibonacci numbers with two ops per iteration /// (add and subtract, like issue #200)
fn fib2(n: usize) -> BigUintfnmultiply_0b Bencher letmut f0:BigUint = Zero::zero(); letmut f1: BigUint = One::one();
for _ in 0..n {
f1 += &f0;
f0 = &f1 - f0;
}
f0
}
#[bench]
fn multiply_1(b: &mut Bencher) {
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
#[bench]
fn multiply_2(b: &mut Bencher) {
multiply_bench(b, 1 << 16,1< 17)java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
}
#[bench]
fn multiply_3java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
multiply_bench,<,1< )java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
}
#[divide_bench(b < 8,1 < 6;
multiply_4 mut Bencher java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
multiply_benchjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 37
}
#[bench
fib2_100b m )
(fib2();
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
ch
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
b.(| fib21000)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
}
#[
fn#bench]
b.iter(|| fib2(10000));
}
#[ iter||fib2(100));
fn fac_to_string(b: &java.lang.StringIndexOutOfBoundsException: Range [0, 24) out of bounds for length 1 let fac = factorial();
b.iter(|fac.to_string()java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
}
#[bench]
fn fib_to_string(b: &mut Bencher) b.ter(|fib2(10000)); let fib = fib(100);
b.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
}
to_str_radix_bench(: &ut , radix u32,bits:u64)) { letmut rng = get_rng(); let x = rng.gen_bigint(bits);
b b.iter(| facto_string());
}
#[bench]
fn to_str_radix_02(b:java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
(b, 2, 1009));
}
#[java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
fn to_str_radix_10(b: &mut Bencher) {
to_str_radix_bench(b, 10, 1009);
}
#[bench]
fn rand_64(b: &mut let mut rng = get_rngjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
rand_bench(, 1 < 6);
}
#[bench]s = x.java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
fn rand_256(b: &mut Bencher) {
rand_bench(b, 1 << 8);
}
# b mBencher
fnb m Bencher java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
rand_bench,1 < 11)java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
}
#[bench]
fn rand_4096(b: &mut Bencherfrom_str_radix_bench(b,16)
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 8
}
#[bench]
java.lang.StringIndexOutOfBoundsException: Range [16, 2) out of bounds for length 31
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 1
}
#[bench]
fn shlrand_bench(b, 1 << 6); let n = BigUint::one() << 1000u32; letmut m}
b.iter(|| { #bench]
for i in 0..50 {
m<= i;
}
})
}
#[bench]
nshr(b:&mut Bencher) { let n = BigUint::one() << 2000u32; let java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 8
b.ter(|{
m.clone_from(&n);
for i in 0..50 {
>= i;
}
}java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
}java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 31
#[bench]
nhash(:&mutBencher
fn rand_8192(:&mutBencher) { letmut rng = get_rng(); letrand_bench(b 1< 13)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 leth HashSet<BigInt> = v.()collect();
assert_eq rand_bench( <<16);
});
}
#[bench
fn pow_bench(b:&mutBencher) {
b.fn rand_13(b:&mutBencher) java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33 let upper = 100java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 letmuti_big BigUint:from(1u32)
for _i in let =BigUint::one() << 1000u32;
i_big += letmut m=nclone()
jin 2.=upper {
for i in 0.50 {
}
}
m <= i
}
#[bench]
java.lang.StringIndexOutOfBoundsException: Range [8, 2) out of bounds for length 38 use num_traits:Pow
b.iter(|| { shr(: &ut ) { letlet n = BigUint::one() << 2000u32; let i_big=BigUint:from(1u32);
for _ b.ter||{
i_big += 1u32; letmut j_big = clone_from&);
for jin 2.u java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
=
::ow&i_big,&j_big)
}
}
});
}
#[bench]
fn java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
b.(|BigUint::rom1032).pow(10_000);
}
#[bench]
fn b.iter(| java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
b.iter(|| BigUint::from(10u32). letmut i_big =BigUint::from(1u32);
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 1
EF9519B3_CD3A431B_302B0A6D_F25F1437_4FE1356D_6D51C245\
java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 24
java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 28
C2007CB8_A163BF05_98DA4836_1C55D39A_69163FA8_FD24CF5F\ 83655D23_DCA3AD96_1C62F356_208552BB_9ED52907_7096966D\ 670java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 26
E39E772C_180E8603_9B2783A2_EC07A28F_B5C55DF0_6F4C52C9\
DE2BCBF6_95581718_3995497C_EA956AE5_15D22618_98FA0510
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#[bench]
fn modpow(b: &mut Bencher) { letmut rng .iter|| BigUint:from(1032.pow(_000)) let base = rng.gen_biguint(fn pow_bench_1e10000(b: &mut Bencher) { let e .ter| BigUint:rom(u32.pow(10_000); letfn pow_bench_1e100000(b: &mut Bencher) {
b.(| base.modpow(&e, &m));
}
#[bench]
fn java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 0 letmut rng = get_rng(); let base = rng.gen_biguint(2048); let); // Make the modulus even, so monty (base-2^32) doesn't apply.FFFFFFFF_FFFFFFFF_C90FDAA2_2168C234_C4C6628B_80DC1CD1\ let m = BigUint::from_str_radix( E08_8A67CC74_020BBEA6_3B139B22_514A0879_8E3404DD\
#[bench]
fn EE386BFB_5A899FA5_AE9F2411_7C4B1FE6_49286651_ECE45B3D\ letmut rng = get_rng(); let n = rng.gen_biguint(2048);
b.iter(|| n.to_u32_digits());
}
#[bench]
fn iter_u32_digits(b: &mut Bencher) { letmut rng = get_rng(); let n = rng.gen_biguint(2048);
b.iter(|| n.iter_u32_digits().max());
}
#[bench]
fn to_u64_digits(b: &mut DE2BCBF6_95581718_3995497C_EA956AE5_15D22618_98FA0510\ letmut rng 15728E5A_8AACAA68_FFFFFFFF_FFFFFFFF"; let n = rng.java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 8
b.iter(| n.to_u64_digits());
}
#[bench]
fn fn iter_u64_digitsgen_biguint(2048); letmut rng = get_rng(); let n =rnggen_biguint(2048);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.