aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/parallel.rs
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2017-02-14 16:13:21 -0800
committerBobby Holley <bobbyholley@gmail.com>2017-02-14 17:17:45 -0800
commitd7d697914436dc7a7bff8b93145223ec88a5522c (patch)
treed30345f4c2a1f6ef6b6da3415f4188a2af51f344 /components/style/parallel.rs
parent5a624ff9560338024c18ad0abf496fd78d5f6bb1 (diff)
downloadservo-d7d697914436dc7a7bff8b93145223ec88a5522c.tar.gz
servo-d7d697914436dc7a7bff8b93145223ec88a5522c.zip
Dump traversal time with other style statistics.
Diffstat (limited to 'components/style/parallel.rs')
-rw-r--r--components/style/parallel.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/components/style/parallel.rs b/components/style/parallel.rs
index dc3d31f5314..8f4a1d1b92d 100644
--- a/components/style/parallel.rs
+++ b/components/style/parallel.rs
@@ -27,6 +27,7 @@ use dom::{OpaqueNode, SendNode, TElement, TNode};
use rayon;
use scoped_tls::ScopedTLS;
use std::borrow::Borrow;
+use time;
use traversal::{DomTraversal, PerLevelTraversalData, PreTraverseToken};
/// The chunk size used to split the parallel traversal nodes.
@@ -44,6 +45,9 @@ pub fn traverse_dom<E, D>(traversal: &D,
where E: TElement,
D: DomTraversal<E>,
{
+ let dump_stats = TraversalStatistics::should_dump();
+ let start_time = if dump_stats { Some(time::precise_time_s()) } else { None };
+
debug_assert!(traversal.is_parallel());
// Handle Gecko's eager initial styling. We don't currently support it
// in conjunction with bottom-up traversal. If we did, we'd need to put
@@ -74,14 +78,15 @@ pub fn traverse_dom<E, D>(traversal: &D,
});
// Dump statistics to stdout if requested.
- if TraversalStatistics::should_dump() {
+ if dump_stats {
let slots = unsafe { tls.unsafe_get() };
- let aggregate = slots.iter().fold(TraversalStatistics::default(), |acc, t| {
+ let mut aggregate = slots.iter().fold(TraversalStatistics::default(), |acc, t| {
match *t.borrow() {
None => acc,
Some(ref cx) => &cx.borrow().statistics + &acc,
}
});
+ aggregate.compute_traversal_time(start_time.unwrap());
println!("{}", aggregate);
}
}