Time other passes of the pipeline

This commit is contained in:
Patrick Walton 2012-07-12 23:17:04 -07:00
parent 016c60e366
commit c35c5f2bc8
5 changed files with 30 additions and 21 deletions

View file

@ -40,10 +40,13 @@ fn Renderer<S: Sink send copy>(sink: S) -> chan<Msg> {
#debug("renderer: got render request");
let draw_target = draw_target_ch.recv();
#debug("renderer: rendering");
clear(draw_target);
draw_display_list(draw_target, display_list);
#debug("renderer: returning surface");
sink.draw(draw_target_ch, draw_target);
do util::time::time("rendering") {
clear(draw_target);
draw_display_list(draw_target, display_list);
#debug("renderer: returning surface");
sink.draw(draw_target_ch, draw_target);
}
}
ExitMsg(response_ch) {
response_ch.send(());

View file

@ -40,17 +40,19 @@ fn Layout(renderer: Renderer) -> Layout {
#debug("layout: received layout request for:");
node.dump();
node.initialize_style_for_subtree();
node.recompute_style_for_subtree(arc(copy styles));
do util::time::time("layout") {
node.initialize_style_for_subtree();
node.recompute_style_for_subtree(arc(copy styles));
let this_box = node.construct_boxes();
this_box.dump();
let this_box = node.construct_boxes();
this_box.dump();
this_box.apply_style_for_subtree();
this_box.reflow(px_to_au(800));
this_box.apply_style_for_subtree();
this_box.reflow(px_to_au(800));
let dlist = build_display_list(this_box);
renderer.send(renderer::RenderMsg(dlist));
let dlist = build_display_list(this_box);
renderer.send(renderer::RenderMsg(dlist));
}
}
}
}

View file

@ -13,7 +13,6 @@ import dom::event::{Event, ResizeEvent};
import layers::ImageLayer;
import geom::size::Size2D;
import std::cmp::fuzzy_eq;
import std::time::precise_time_ns;
import vec::push;
type OSMain = chan<Msg>;
@ -35,13 +34,6 @@ fn OSMain() -> OSMain {
}
}
fn time(msg: str, callback: fn()) {
let start_time = precise_time_ns();
callback();
let end_time = precise_time_ns();
#debug("%s took %u ms", msg, ((end_time - start_time) / 1000000u64) as uint);
}
fn mainloop(po: port<Msg>) {
let key_handlers: @dvec<chan<()>> = @dvec();
let event_listeners: @dvec<chan<Event>> = @dvec();
@ -117,7 +109,7 @@ fn mainloop(po: port<Msg>) {
#debug("osmain: drawing to screen");
do time("compositing") {
do util::time::time("compositing") {
layers::rendergl::render_scene(context, *scene);
}

View file

@ -93,6 +93,7 @@ mod util {
mod tree;
mod color;
mod unsafe;
mod time;
}
#[warn(no_non_implicitly_copyable_typarams)]

11
src/servo/util/time.rs Normal file
View file

@ -0,0 +1,11 @@
// Timing functions.
import std::time::precise_time_ns;
fn time(msg: str, callback: fn()) {
let start_time = precise_time_ns();
callback();
let end_time = precise_time_ns();
#debug("%s took %u ms", msg, ((end_time - start_time) / 1000000u64) as uint);
}