From 7ed4f0ca2746d3bd8ecc79849bfcc4337c706faf Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 24 Mar 2025 04:09:14 -0500 Subject: [PATCH] perf: use `absl::flat_hash_map` instead of `std::unordered_map` (#46202) * perf: make ElectronUsbDelegate::controller_map_ an absl::flat_hash_map * perf: make ElectronSerialDelegate::controller_map_ an absl::flat_hash_map * perf: make ElectronHidDelegate::controller_map_ an absl::flat_hash_map * perf: make FrameTreeNodeIdMap an absl::flat_hash_map * perf: make AutofillDriverFactory::driver_map_ an absl::flat_hash_map * perf: make asar::Archive::external_files_ an absl::flat_hash_map * perf: make VersionIdMap an absl::flat_hash_map * perf: make ObjectCache::proxy_map_ an absl::flat_hash_map * docs: add TODO to investigate absl map in KeyWeakMap --- shell/browser/api/electron_api_service_worker_main.cc | 9 ++++----- shell/browser/api/electron_api_web_frame_main.cc | 4 ++-- shell/browser/electron_autofill_driver_factory.h | 5 +++-- shell/browser/hid/electron_hid_delegate.h | 6 +++--- shell/browser/serial/electron_serial_delegate.h | 6 +++--- shell/browser/usb/electron_usb_delegate.h | 6 +++--- shell/common/asar/archive.h | 6 +++--- shell/common/key_weak_map.h | 1 + shell/renderer/api/context_bridge/object_cache.h | 5 ++--- 9 files changed, 24 insertions(+), 24 deletions(-) diff --git a/shell/browser/api/electron_api_service_worker_main.cc b/shell/browser/api/electron_api_service_worker_main.cc index 585822147df2..25ccf1f39187 100644 --- a/shell/browser/api/electron_api_service_worker_main.cc +++ b/shell/browser/api/electron_api_service_worker_main.cc @@ -5,7 +5,6 @@ #include "shell/browser/api/electron_api_service_worker_main.h" #include -#include #include #include "base/logging.h" @@ -28,6 +27,7 @@ #include "shell/common/gin_helper/promise.h" #include "shell/common/node_includes.h" #include "shell/common/v8_util.h" +#include "third_party/abseil-cpp/absl/container/flat_hash_map.h" namespace { @@ -58,10 +58,9 @@ std::optional GetLiveVersionInfo( namespace electron::api { // ServiceWorkerKey -> ServiceWorkerMain* -typedef std::unordered_map - VersionIdMap; +using VersionIdMap = absl::flat_hash_map; VersionIdMap& GetVersionIdMap() { static base::NoDestructor instance; diff --git a/shell/browser/api/electron_api_web_frame_main.cc b/shell/browser/api/electron_api_web_frame_main.cc index c018b7138616..d554cf1a3391 100644 --- a/shell/browser/api/electron_api_web_frame_main.cc +++ b/shell/browser/api/electron_api_web_frame_main.cc @@ -5,7 +5,6 @@ #include "shell/browser/api/electron_api_web_frame_main.h" #include -#include #include #include @@ -36,6 +35,7 @@ #include "shell/common/gin_helper/promise.h" #include "shell/common/node_includes.h" #include "shell/common/v8_util.h" +#include "third_party/abseil-cpp/absl/container/flat_hash_map.h" namespace { @@ -99,7 +99,7 @@ namespace electron::api { // Using FrameTreeNode allows us to track frame across navigations. This // is most similar to how