diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-05-09 17:30:31 -0700 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-05-18 20:00:50 -0700 |
| commit | da204e1d733ad1dbe794b7d9f5ce2badab7f8993 (patch) | |
| tree | 0368fb21bf4156b17710d8dbcb7622c5be8832a3 /src/test/bench | |
| parent | 253979236e00a391fdce12943fd21b5e8c4656b1 (diff) | |
| download | rust-da204e1d733ad1dbe794b7d9f5ce2badab7f8993.tar.gz rust-da204e1d733ad1dbe794b7d9f5ce2badab7f8993.zip | |
add swappable/dvec modules
Diffstat (limited to 'src/test/bench')
| -rw-r--r-- | src/test/bench/vec-append.rs | 53 |
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)); + } +} |
