Skip to content

Commit 805155d

Browse files
committed
---
yaml --- r: 13738 b: refs/heads/master c: 0c42a3f h: refs/heads/master v: v3
1 parent b72fc8b commit 805155d

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 3297d465ca788fbb20a2430ced28420993deb8b7
2+
refs/heads/master: 0c42a3ffee8e5943cbe9783f924c467069c5e0c3
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/libcore/vec.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -484,10 +484,9 @@ fn push_all_move<T>(&v: [const T]/~, -rhs: [const T]/~) {
484484

485485
// Appending
486486
#[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;
489489
unchecked {
490-
push_all(v, lhs);
491490
push_all(v, rhs);
492491
}
493492
ret v;

trunk/src/test/bench/core-std.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ fn main(argv: [str]/~) {
2222
#bench[shift_push];
2323
#bench[read_line];
2424
#bench[str_set];
25+
#bench[vec_plus];
2526
#bench[vec_append];
2627
#bench[vec_push_all];
2728
}
@@ -75,18 +76,37 @@ fn str_set() {
7576
}
7677
}
7778

78-
fn vec_append() {
79+
fn vec_plus() {
7980
let r = rand::rng();
8081

81-
let mut v = []/~;
82-
for uint::range(0, 1500) {|i|
82+
let mut v = []/~;
83+
let mut i = 0;
84+
while i < 1500 {
8385
let rv = vec::from_elem(r.gen_uint_range(0, i + 1), i);
8486
if r.gen_bool() {
8587
v += rv;
8688
}
8789
else {
8890
v = rv + v;
8991
}
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;
90110
}
91111
}
92112

0 commit comments

Comments
 (0)