diff options
author | Bobby Holley <bobbyholley@gmail.com> | 2017-02-14 16:13:21 -0800 |
---|---|---|
committer | Bobby Holley <bobbyholley@gmail.com> | 2017-02-14 17:17:45 -0800 |
commit | d7d697914436dc7a7bff8b93145223ec88a5522c (patch) | |
tree | d30345f4c2a1f6ef6b6da3415f4188a2af51f344 /components/style/parallel.rs | |
parent | 5a624ff9560338024c18ad0abf496fd78d5f6bb1 (diff) | |
download | servo-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.rs | 9 |
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); } } |