]> git.lizzy.rs Git - rust.git/blob - src/test/bench/task-perf-vector-party.rs
b5d7fbf24a060f606092b1e8c56026bb21c9f7a1
[rust.git] / src / test / bench / task-perf-vector-party.rs
1 // Vectors are allocated in the Rust kernel's memory region, use of
2 // which requires some amount of synchronization. This test exercises
3 // that synchronization by spawning a number of tasks and then
4 // allocating and freeing vectors.
5
6 use std;
7 import vec;
8 import uint;
9 import str;
10 import task;
11
12 fn f(&&n: uint) {
13     uint::range(0u, n) {|i|
14         let v: [u8] = [];
15         vec::reserve(v, 1000u);
16     }
17 }
18
19 fn main(args: [str]) {
20     let n =
21         if vec::len(args) < 2u {
22             100u
23         } else { uint::parse_buf(str::bytes(args[1]), 10u) };
24     uint::range(0u, 100u) {|i| task::spawn(copy n, f); }
25 }