summary refs log tree commit diff
path: root/src/test/bench
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-05-09 17:30:31 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-05-18 20:00:50 -0700
commitda204e1d733ad1dbe794b7d9f5ce2badab7f8993 (patch)
tree0368fb21bf4156b17710d8dbcb7622c5be8832a3 /src/test/bench
parent253979236e00a391fdce12943fd21b5e8c4656b1 (diff)
downloadrust-da204e1d733ad1dbe794b7d9f5ce2badab7f8993.tar.gz
rust-da204e1d733ad1dbe794b7d9f5ce2badab7f8993.zip
add swappable/dvec modules
Diffstat (limited to 'src/test/bench')
-rw-r--r--src/test/bench/vec-append.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/test/bench/vec-append.rs b/src/test/bench/vec-append.rs
new file mode 100644
index 00000000000..a84c776f0cc
--- /dev/null
+++ b/src/test/bench/vec-append.rs
@@ -0,0 +1,53 @@
+// 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 = [];
+    uint::range(0u, num) { |i|
+        result += [i];
+    }
+    ret result;
+}
+
+fn collect_dvec(num: uint) -> [mut uint] {
+    let result = dvec();
+    uint::range(0u, num) { |i|
+        result.push(i);
+    }
+    ret dvec::unwrap(result);
+}
+
+fn main(args: [str]) {
+    let args = if vec::len(args) <= 1u {["", "100000"]} else {args};
+    let max = uint::from_str(args[1]).get();
+    let start = std::time::precise_time_s();
+    collect_raw(max);
+    let mid = std::time::precise_time_s();
+    collect_dvec(max);
+    let end = std::time::precise_time_s();
+
+    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));
+    }
+}