perf: use absl::flat_hash_map instead of std::unordered_map (#46217)

* perf: make ElectronUsbDelegate::controller_map_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make ElectronSerialDelegate::controller_map_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make ElectronHidDelegate::controller_map_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make FrameTreeNodeIdMap an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make AutofillDriverFactory::driver_map_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make asar::Archive::external_files_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make VersionIdMap an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* perf: make ObjectCache::proxy_map_ an absl::flat_hash_map

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* docs: add TODO to investigate absl map in KeyWeakMap

Co-authored-by: Charles Kerr <charles@charleskerr.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
This commit is contained in:
trop[bot] 2025-03-24 09:30:52 -05:00 committed by GitHub
parent e1b2b8ef0c
commit 76fa5b7af1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 24 additions and 24 deletions

View file

@ -5,7 +5,6 @@
#include "shell/browser/api/electron_api_web_frame_main.h"
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
@ -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 <iframe> works.
using FrameTreeNodeIdMap =
std::unordered_map<content::FrameTreeNodeId, WebFrameMain*>;
absl::flat_hash_map<content::FrameTreeNodeId, WebFrameMain*>;
// Token -> WebFrameMain*
// Maps exact RFH to a WebFrameMain instance.