File tree Expand file tree Collapse file tree 2 files changed +15
-3
lines changed Expand file tree Collapse file tree 2 files changed +15
-3
lines changed Original file line number Diff line number Diff line change 2
2
refs/heads/master: 62f1d68439dcfd509eaca29887afa97f22938373
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 6e7f170fedd3c526a643c0b2d13863acd982be02
5
- refs/heads/try: 606c23a78920c03758e200004fd9d1f4257f0325
5
+ refs/heads/try: 7dc187afd8a19dad05dbf1a689e6b6f400f7bc0a
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
Original file line number Diff line number Diff line change @@ -784,11 +784,12 @@ impl BigUint {
784
784
if n_bits == 0 || self . data . is_empty ( ) { return ( * self ) . clone ( ) ; }
785
785
786
786
let mut borrow = 0 ;
787
- let mut shifted = ~ [ ] ;
787
+ let mut shifted_rev = vec :: with_capacity ( self . data . len ( ) ) ;
788
788
for elem in self . data . rev_iter ( ) {
789
- shifted = ~ [ ( * elem >> n_bits) | borrow] + shifted ;
789
+ shifted_rev . push ( ( * elem >> n_bits) | borrow) ;
790
790
borrow = * elem << ( BigDigit :: bits - n_bits) ;
791
791
}
792
+ let shifted = { shifted_rev. reverse ( ) ; shifted_rev } ;
792
793
return BigUint :: new ( shifted) ;
793
794
}
794
795
@@ -2637,4 +2638,15 @@ mod bench {
2637
2638
fib. to_str ( ) ;
2638
2639
} ) ;
2639
2640
}
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
+ }
2640
2652
}
You can’t perform that action at this time.
0 commit comments