Skip to content

Commit 3ca3002

Browse files
pnkfelixalexcrichton
authored andcommitted
---
yaml --- r: 104142 b: refs/heads/try c: 7dc187a h: refs/heads/master v: v3
1 parent a380d77 commit 3ca3002

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 62f1d68439dcfd509eaca29887afa97f22938373
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 6e7f170fedd3c526a643c0b2d13863acd982be02
5-
refs/heads/try: 606c23a78920c03758e200004fd9d1f4257f0325
5+
refs/heads/try: 7dc187afd8a19dad05dbf1a689e6b6f400f7bc0a
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/src/libnum/bigint.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -784,11 +784,12 @@ impl BigUint {
784784
if n_bits == 0 || self.data.is_empty() { return (*self).clone(); }
785785

786786
let mut borrow = 0;
787-
let mut shifted = ~[];
787+
let mut shifted_rev = vec::with_capacity(self.data.len());
788788
for elem in self.data.rev_iter() {
789-
shifted = ~[(*elem >> n_bits) | borrow] + shifted;
789+
shifted_rev.push((*elem >> n_bits) | borrow);
790790
borrow = *elem << (BigDigit::bits - n_bits);
791791
}
792+
let shifted = { shifted_rev.reverse(); shifted_rev };
792793
return BigUint::new(shifted);
793794
}
794795

@@ -2637,4 +2638,15 @@ mod bench {
26372638
fib.to_str();
26382639
});
26392640
}
2641+
2642+
#[bench]
2643+
fn shr(bh: &mut BenchHarness) {
2644+
let n = { let one : BigUint = One::one(); one << 1000 };
2645+
bh.iter(|| {
2646+
let mut m = n.clone();
2647+
for _ in range(0, 10) {
2648+
m = m >> 1;
2649+
}
2650+
})
2651+
}
26402652
}

0 commit comments

Comments
 (0)