diff options
-rw-r--r-- | components/style/parallel.rs | 10 | ||||
-rw-r--r-- | components/style/sharing/mod.rs | 6 |
2 files changed, 10 insertions, 6 deletions
diff --git a/components/style/parallel.rs b/components/style/parallel.rs index 859548d3c8b..fe6bceb4da1 100644 --- a/components/style/parallel.rs +++ b/components/style/parallel.rs @@ -37,9 +37,11 @@ use traversal::{DomTraversal, PerLevelTraversalData, PreTraverseToken}; /// /// Larger values will increase style sharing cache hits and general DOM locality /// at the expense of decreased opportunities for parallelism. The style sharing -/// cache can hold 8 entries, but not all styles are shareable, so we set this -/// value to 16. These values have not been measured and could potentially be -/// tuned. +/// cache can hold 31 entries, but not all styles are shareable, so we set this +/// value to 16. The size of the cache has been measured to provide pretty good +/// sharing on a few pages, but could probably use more measurement and tuning. +/// The work unit size is a bit of a guess at the moment; again could use +/// measurement and tuning. pub const WORK_UNIT_MAX: usize = 16; /// Verify that the style sharing cache size doesn't change. If it does, we should @@ -48,7 +50,7 @@ pub const WORK_UNIT_MAX: usize = 16; /// have surprising effects on the parallelism characteristics of the style system. #[allow(dead_code)] fn static_assert() { - unsafe { mem::transmute::<_, [u32; STYLE_SHARING_CANDIDATE_CACHE_SIZE]>([1; 8]); } + unsafe { mem::transmute::<_, [u32; STYLE_SHARING_CANDIDATE_CACHE_SIZE]>([1; 31]); } } /// A list of node pointers. diff --git a/components/style/sharing/mod.rs b/components/style/sharing/mod.rs index f996538fb6b..7f9b2bc32d6 100644 --- a/components/style/sharing/mod.rs +++ b/components/style/sharing/mod.rs @@ -84,8 +84,10 @@ use stylist::{ApplicableDeclarationBlock, Stylist}; mod checks; /// The amount of nodes that the style sharing candidate cache should hold at -/// most. -pub const STYLE_SHARING_CANDIDATE_CACHE_SIZE: usize = 8; +/// most. We'd somewhat like 32, but ArrayDeque only implements certain backing +/// store sizes. A cache size of 32 would mean a backing store of 33, but +/// that's not an implemented size: we can do 32 or 40. +pub const STYLE_SHARING_CANDIDATE_CACHE_SIZE: usize = 31; /// Controls whether the style sharing cache is used. #[derive(Clone, Copy, PartialEq)] |