diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-27 18:07:16 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-27 18:07:16 -0800 |
| commit | 98c31aaaffcd98ab708acd095cc0202fa49ce2dd (patch) | |
| tree | a2a7b18a6e47b964b30bc1ca0adddc401e5481ed /src/rustdoc/rustdoc.rs | |
| parent | 7e9aa6c3c2ae054e32dfcc7c5e4830ce7c4c6921 (diff) | |
| download | rust-98c31aaaffcd98ab708acd095cc0202fa49ce2dd.tar.gz rust-98c31aaaffcd98ab708acd095cc0202fa49ce2dd.zip | |
rustdoc: Time passes
Diffstat (limited to 'src/rustdoc/rustdoc.rs')
| -rwxr-xr-x | src/rustdoc/rustdoc.rs | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/src/rustdoc/rustdoc.rs b/src/rustdoc/rustdoc.rs index f00f0d0726a..00213c57003 100755 --- a/src/rustdoc/rustdoc.rs +++ b/src/rustdoc/rustdoc.rs @@ -7,7 +7,10 @@ import doc::item; import doc::util; #[doc = "A single operation on the document model"] -type pass = fn~(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc; +type pass = { + name: str, + f: fn~(srv: astsrv::srv, doc: doc::cratedoc) -> doc::cratedoc +}; fn run_passes( srv: astsrv::srv, @@ -36,7 +39,9 @@ fn run_passes( log(debug, #fmt("pass #%d", passno)); passno += 1; log(debug, doc); - pass(srv, doc) + time(pass.name) {|| + pass.f(srv, doc) + } } } @@ -72,7 +77,16 @@ fn test_run_passes() { } let source = ""; astsrv::from_str(source) {|srv| - let passes = [pass1, pass2]; + let passes = [ + { + name: "", + f: pass1 + }, + { + name: "", + f: pass2 + } + ]; let doc = extract::from_srv(srv, "one"); let doc = run_passes(srv, doc, passes); assert doc.topmod.name() == "onetwothree"; @@ -90,12 +104,25 @@ fn main(argv: [str]) { run(source_file); } +fn time<T>(what: str, f: fn() -> T) -> T { + let start = std::time::precise_time_s(); + let rv = f(); + let end = std::time::precise_time_s(); + #info("time: %3.3f s %s", end - start, what); + ret rv; +} + #[doc = "Runs rustdoc over the given file"] fn run(source_file: str) { let default_name = source_file; astsrv::from_file(source_file) {|srv| - let doc = extract::from_srv(srv, default_name); + time("wait") {|| + astsrv::exec(srv) {|_ctxt| () } + }; + let doc = time("extract") {|| + extract::from_srv(srv, default_name) + }; run_passes(srv, doc, [ reexport_pass::mk_pass(), prune_unexported_pass::mk_pass(), |
