mirror of
https://github.com/servo/servo.git
synced 2025-09-27 23:30:08 +01:00
constellation: Use FnvHashMap
for hashmaps that use ids as keys (#39106)
FNV is faster for hashing less than 16 bytes of data and the cryptographic properties of the default HashMap are not needed for the various ids. Testing: This does not change functionality. Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
This commit is contained in:
parent
0ae9ee28d5
commit
5c7ea4bdee
19 changed files with 71 additions and 54 deletions
|
@ -22,6 +22,7 @@ crossbeam-channel = { workspace = true }
|
|||
dpi = { version = "0.1" }
|
||||
embedder_traits = { workspace = true }
|
||||
euclid = { workspace = true }
|
||||
fnv = { workspace = true }
|
||||
gleam = { workspace = true }
|
||||
glow = { workspace = true }
|
||||
image = { workspace = true }
|
||||
|
|
|
@ -12,6 +12,7 @@ use base::print_tree::PrintTree;
|
|||
use bitflags::bitflags;
|
||||
use embedder_traits::ViewportDetails;
|
||||
use euclid::SideOffsets2D;
|
||||
use fnv::FnvHashMap;
|
||||
use malloc_size_of_derive::MallocSizeOf;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_geometry::FastLayoutTransform;
|
||||
|
@ -558,7 +559,10 @@ impl ScrollTree {
|
|||
|
||||
/// Given a set of all scroll offsets coming from the Servo renderer, update all of the offsets
|
||||
/// for nodes that actually exist in this tree.
|
||||
pub fn set_all_scroll_offsets(&mut self, offsets: &HashMap<ExternalScrollId, LayoutVector2D>) {
|
||||
pub fn set_all_scroll_offsets(
|
||||
&mut self,
|
||||
offsets: &FnvHashMap<ExternalScrollId, LayoutVector2D>,
|
||||
) {
|
||||
for node in self.nodes.iter_mut() {
|
||||
if let SpatialTreeNodeInfo::Scroll(ref mut scroll_info) = node.info {
|
||||
if let Some(offset) = offsets.get(&scroll_info.external_id) {
|
||||
|
@ -583,7 +587,7 @@ impl ScrollTree {
|
|||
|
||||
/// Collect all of the scroll offsets of the scrolling nodes of this tree into a
|
||||
/// [`HashMap`] which can be applied to another tree.
|
||||
pub fn scroll_offsets(&self) -> HashMap<ExternalScrollId, LayoutVector2D> {
|
||||
pub fn scroll_offsets(&self) -> FnvHashMap<ExternalScrollId, LayoutVector2D> {
|
||||
HashMap::from_iter(self.nodes.iter().filter_map(|node| match node.info {
|
||||
SpatialTreeNodeInfo::Scroll(ref scroll_info) => {
|
||||
Some((scroll_info.external_id, scroll_info.offset))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue