File tree Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Expand file tree Collapse file tree 3 files changed +26
-7
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 3297d465ca788fbb20a2430ced28420993deb8b7
2
+ refs/heads/master: 0c42a3ffee8e5943cbe9783f924c467069c5e0c3
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5
5
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf
Original file line number Diff line number Diff line change @@ -484,10 +484,9 @@ fn push_all_move<T>(&v: [const T]/~, -rhs: [const T]/~) {
484
484
485
485
// Appending
486
486
#[ inline( always) ]
487
- pure fn append < T : copy > ( lhs : [ T ] /& , rhs : [ const T ] /& ) -> [ T ] /~ {
488
- let mut v = [ ] /~ ;
487
+ pure fn append < T : copy > ( + lhs : [ T ] /~ , rhs : [ const T ] /& ) -> [ T ] /~ {
488
+ let mut v <- lhs ;
489
489
unchecked {
490
- push_all ( v, lhs) ;
491
490
push_all ( v, rhs) ;
492
491
}
493
492
ret v;
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ fn main(argv: [str]/~) {
22
22
#bench[ shift_push] ;
23
23
#bench[ read_line] ;
24
24
#bench[ str_set] ;
25
+ #bench[ vec_plus] ;
25
26
#bench[ vec_append] ;
26
27
#bench[ vec_push_all] ;
27
28
}
@@ -75,18 +76,37 @@ fn str_set() {
75
76
}
76
77
}
77
78
78
- fn vec_append ( ) {
79
+ fn vec_plus ( ) {
79
80
let r = rand:: rng ( ) ;
80
81
81
- let mut v = [ ] /~;
82
- for uint:: range( 0 , 1500 ) { |i|
82
+ let mut v = [ ] /~;
83
+ let mut i = 0 ;
84
+ while i < 1500 {
83
85
let rv = vec:: from_elem ( r. gen_uint_range ( 0 , i + 1 ) , i) ;
84
86
if r. gen_bool ( ) {
85
87
v += rv;
86
88
}
87
89
else {
88
90
v = rv + v;
89
91
}
92
+ i += 1 ;
93
+ }
94
+ }
95
+
96
+ fn vec_append ( ) {
97
+ let r = rand:: rng ( ) ;
98
+
99
+ let mut v = [ ] /~;
100
+ let mut i = 0 ;
101
+ while i < 1500 {
102
+ let rv = vec:: from_elem ( r. gen_uint_range ( 0 , i + 1 ) , i) ;
103
+ if r. gen_bool ( ) {
104
+ v = vec:: append ( v, rv) ;
105
+ }
106
+ else {
107
+ v = vec:: append ( rv, v) ;
108
+ }
109
+ i += 1 ;
90
110
}
91
111
}
92
112
You can’t perform that action at this time.
0 commit comments