From c78ac290020ab6b50c66ab440724487b38440399 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Fri, 22 Jul 2011 12:03:10 +0200 Subject: [PATCH] Show millisecond precision for time_passes times Closes #713 --- src/comp/driver/rustc.rs | 9 ++++----- src/comp/util/common.rs | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index b267af517b4..25b54869448 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -99,12 +99,11 @@ fn parse_input(sess: session::session, cfg: &ast::crate_cfg, input: str) -> fn time[T](do_it: bool, what: str, thunk: fn() -> T ) -> T { if !do_it { ret thunk(); } - let start = std::time::get_time(); + let start = std::time::precise_time_s(); let rv = thunk(); - let end = std::time::get_time(); - // FIXME: Actually do timeval math. - - log_err #fmt("time: %s took %u s", what, end.sec - start.sec as uint); + let end = std::time::precise_time_s(); + log_err #fmt("time: %s took %s s", what, + common::float_to_str(end - start, 3u)); ret rv; } diff --git a/src/comp/util/common.rs b/src/comp/util/common.rs index 91ab2665f17..e3154581b93 100644 --- a/src/comp/util/common.rs +++ b/src/comp/util/common.rs @@ -163,6 +163,28 @@ fn call_kind_str(c: call_kind) -> str { fn is_main_name(path: &str[]) -> bool { str::eq(option::get(std::ivec::last(path)), "main") } + +// FIXME mode this to std::float when editing the stdlib no longer +// requires a snapshot +fn float_to_str(num: float, digits: uint) -> str { + let accum = if num < 0.0 { num = -num; "-" } + else { "" }; + let trunc = num as uint; + let frac = num - (trunc as float); + accum += uint::str(trunc); + if frac == 0.0 || digits == 0u { ret accum; } + accum += "."; + while digits > 0u && frac > 0.0 { + frac *= 10.0; + let digit = frac as uint; + accum += uint::str(digit); + frac -= digit as float; + digits -= 1u; + } + ret accum; +} + + // // Local Variables: // mode: rust