Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

66 lines (56 sloc) 1.89 kb
// A raw test of vector appending performance.
use std;
import dvec::{dvec, extensions};
import io::writer_util;
fn collect_raw(num: uint) -> ~[uint] {
let mut result = ~[];
for uint::range(0u, num) |i| {
vec::push(result, i);
}
ret result;
}
fn collect_dvec(num: uint) -> ~[mut uint] {
let result = dvec();
for uint::range(0u, num) |i| {
result.push(i);
}
ret dvec::unwrap(result);
}
fn main(args: ~[str]) {
let args = if os::getenv("RUST_BENCH").is_some() {
~["", "50000000"]
} else if args.len() <= 1u {
~["", "100000"]
} else {
args
};
let max = uint::from_str(args[1]).get();
let start = std::time::precise_time_s();
let raw_v = collect_raw(max);
let mid = std::time::precise_time_s();
let dvec_v = collect_dvec(max);
let end = std::time::precise_time_s();
// check each vector
assert raw_v.len() == max;
for raw_v.eachi |i, v| { assert i == v; }
assert dvec_v.len() == max;
for dvec_v.eachi |i, v| { assert i == v; }
let raw = mid - start;
let dvec = end - mid;
let maxf = max as float;
let rawf = raw as float;
let dvecf = dvec as float;
io::stdout().write_str(#fmt("Raw : %? seconds\n", raw));
io::stdout().write_str(#fmt(" : %f op/sec\n", maxf/rawf));
io::stdout().write_str(#fmt("\n"));
io::stdout().write_str(#fmt("Dvec : %? seconds\n", dvec));
io::stdout().write_str(#fmt(" : %f op/sec\n", maxf/dvecf));
io::stdout().write_str(#fmt("\n"));
if dvec < raw {
io::stdout().write_str(#fmt("Dvec is %f%% faster than raw\n",
(rawf - dvecf) / rawf * 100.0));
} else {
io::stdout().write_str(#fmt("Raw is %f%% faster than dvec\n",
(dvecf - rawf) / dvecf * 100.0));
}
}
Jump to Line
Something went wrong with that request. Please try again.