commit | 34cdc74c114cd7473b38d4ce666eeee6637f6067 | [log] [tgz] |
---|---|---|
author | Steinar H. Gunderson <sesse@chromium.org> | Mon Sep 26 18:05:58 2022 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Sep 26 18:05:58 2022 |
tree | de531af59c9b4a02d6fefde99022b95a5b17c609 | |
parent | 426e80278328b18ddd5197a899189c6cf4badc85 [diff] |
Do not store self-invalidation sets for classes. This saves a lot of memory for sites with lots of simple class selectors, at the cost of self-invalidation for any element that gets a class added or removed. Note in particular that adding or removing a style sheet then self-invalidates all DOM nodes that have a class attribute. We add a Bloom filter to mitigate this (inserting each such class name into the Bloom filter), which should be 95% effective at rejecting the spurious self-invalidations whenever we're below ~2000 such sets, but it will deteriorate if we have a lot of them. To investigate this on the real web, we put this behind a new Finch experiment called InvalidationSetClassBloomFilter, since it's potentially a CPU/RAM tradeoff and we'd like to see exactly how good/bad it is. Style perftest, PartitionAlloc memory: ECommerce 1388 → 1371 kB ( -17 kB) Encyclopedia 6403 → 6259 kB ( -144 kB) Extension 6145 → 6141 kB ( -4 kB) News 3866 → 3803 kB ( -63 kB) Search 1880 → 1763 kB ( -117 kB) Social1 5606 → 4589 kB (-1017 kB) Social2 488 → 453 kB ( -35 kB) Sports 3713 → 3325 kB ( -388 kB) Video 11191 → 11058 kB ( -133 kB) Change-Id: Idf811ae45a5425f6059624589f289b0f4800c1d3 Bug: 1368064 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3913591 Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org> Commit-Queue: Steinar H Gunderson <sesse@chromium.org> Reviewed-by: Kentaro Hara <haraken@chromium.org> Cr-Commit-Position: refs/heads/main@{#1051296}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.