perf: prefer absl::flat_hash_set over std::set when sorted order is not needed (#46410)
		
	* perf: use an absl::flat_hash_set for UsbChooserContext::ephemeral_devices_ * perf: use an absl::flat_hash_set for GlobalMenuBarRegistrarX11::live_windows_ * perf: use an absl::flat_hash_set for NativeWindowViews::forwarding_windows_ * perf: use an absl::flat_hash_set for OffScreenRenderWidgetHostView::guest_host_views_ perf: use an absl::flat_hash_set for OffScreenRenderWidgetHostView::proxy_views_ * perf: use an absl::flat_hash_set for NativeWindow::injected_frames_ * perf: use an absl::flat_hash_set for NativeWindow::background_throttling_sources_
This commit is contained in:
		
					parent
					
						
							
								36e233797c
							
						
					
				
			
			
				commit
				
					
						6f24dbaab4
					
				
			
		
					 7 changed files with 14 additions and 15 deletions
				
			
		|  | @ -9,7 +9,6 @@ | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <optional> | #include <optional> | ||||||
| #include <queue> | #include <queue> | ||||||
| #include <set> |  | ||||||
| #include <string> | #include <string> | ||||||
| #include <string_view> | #include <string_view> | ||||||
| #include <vector> | #include <vector> | ||||||
|  | @ -23,6 +22,7 @@ | ||||||
| #include "content/public/browser/web_contents_user_data.h" | #include "content/public/browser/web_contents_user_data.h" | ||||||
| #include "extensions/browser/app_window/size_constraints.h" | #include "extensions/browser/app_window/size_constraints.h" | ||||||
| #include "shell/browser/native_window_observer.h" | #include "shell/browser/native_window_observer.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| #include "ui/views/widget/widget_delegate.h" | #include "ui/views/widget/widget_delegate.h" | ||||||
| 
 | 
 | ||||||
| class SkRegion; | class SkRegion; | ||||||
|  | @ -515,7 +515,8 @@ class NativeWindow : public base::SupportsUserData, | ||||||
|   // Observers of this window.
 |   // Observers of this window.
 | ||||||
|   base::ObserverList<NativeWindowObserver> observers_; |   base::ObserverList<NativeWindowObserver> observers_; | ||||||
| 
 | 
 | ||||||
|   std::set<BackgroundThrottlingSource*> background_throttling_sources_; |   absl::flat_hash_set<BackgroundThrottlingSource*> | ||||||
|  |       background_throttling_sources_; | ||||||
| 
 | 
 | ||||||
|   // Accessible title.
 |   // Accessible title.
 | ||||||
|   std::u16string accessible_title_; |   std::u16string accessible_title_; | ||||||
|  |  | ||||||
|  | @ -9,11 +9,11 @@ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <optional> | #include <optional> | ||||||
| #include <set> |  | ||||||
| #include <string> | #include <string> | ||||||
| 
 | 
 | ||||||
| #include "base/memory/raw_ptr.h" | #include "base/memory/raw_ptr.h" | ||||||
| #include "shell/browser/ui/views/root_view.h" | #include "shell/browser/ui/views/root_view.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| #include "ui/base/ozone_buildflags.h" | #include "ui/base/ozone_buildflags.h" | ||||||
| #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" | #include "ui/views/controls/webview/unhandled_keyboard_event_handler.h" | ||||||
| #include "ui/views/widget/widget_observer.h" | #include "ui/views/widget/widget_observer.h" | ||||||
|  | @ -283,7 +283,7 @@ class NativeWindowViews : public NativeWindow, | ||||||
|   base::win::ScopedGDIObject<HICON> app_icon_; |   base::win::ScopedGDIObject<HICON> app_icon_; | ||||||
| 
 | 
 | ||||||
|   // The set of windows currently forwarding mouse messages.
 |   // The set of windows currently forwarding mouse messages.
 | ||||||
|   static std::set<NativeWindowViews*> forwarding_windows_; |   static inline absl::flat_hash_set<NativeWindowViews*> forwarding_windows_; | ||||||
|   static HHOOK mouse_hook_; |   static HHOOK mouse_hook_; | ||||||
|   bool forwarding_mouse_messages_ = false; |   bool forwarding_mouse_messages_ = false; | ||||||
|   HWND legacy_window_ = nullptr; |   HWND legacy_window_ = nullptr; | ||||||
|  |  | ||||||
|  | @ -224,7 +224,6 @@ bool IsScreenReaderActive() { | ||||||
| 
 | 
 | ||||||
| }  // namespace
 | }  // namespace
 | ||||||
| 
 | 
 | ||||||
| std::set<NativeWindowViews*> NativeWindowViews::forwarding_windows_; |  | ||||||
| HHOOK NativeWindowViews::mouse_hook_ = nullptr; | HHOOK NativeWindowViews::mouse_hook_ = nullptr; | ||||||
| 
 | 
 | ||||||
| bool NativeWindowViews::ExecuteWindowsCommand(int command_id) { | bool NativeWindowViews::ExecuteWindowsCommand(int command_id) { | ||||||
|  |  | ||||||
|  | @ -6,7 +6,6 @@ | ||||||
| #define ELECTRON_SHELL_BROWSER_OSR_OSR_RENDER_WIDGET_HOST_VIEW_H_ | #define ELECTRON_SHELL_BROWSER_OSR_OSR_RENDER_WIDGET_HOST_VIEW_H_ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <set> |  | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
|  | @ -28,6 +27,7 @@ | ||||||
| #include "shell/browser/osr/osr_host_display_client.h" | #include "shell/browser/osr/osr_host_display_client.h" | ||||||
| #include "shell/browser/osr/osr_video_consumer.h" | #include "shell/browser/osr/osr_video_consumer.h" | ||||||
| #include "shell/browser/osr/osr_view_proxy.h" | #include "shell/browser/osr/osr_view_proxy.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| #include "third_party/blink/public/mojom/widget/record_content_to_visible_time_request.mojom-forward.h" | #include "third_party/blink/public/mojom/widget/record_content_to_visible_time_request.mojom-forward.h" | ||||||
| #include "third_party/skia/include/core/SkBitmap.h" | #include "third_party/skia/include/core/SkBitmap.h" | ||||||
| #include "ui/base/ime/text_input_client.h" | #include "ui/base/ime/text_input_client.h" | ||||||
|  | @ -277,8 +277,8 @@ class OffScreenRenderWidgetHostView | ||||||
|   raw_ptr<OffScreenRenderWidgetHostView> parent_host_view_ = nullptr; |   raw_ptr<OffScreenRenderWidgetHostView> parent_host_view_ = nullptr; | ||||||
|   raw_ptr<OffScreenRenderWidgetHostView> popup_host_view_ = nullptr; |   raw_ptr<OffScreenRenderWidgetHostView> popup_host_view_ = nullptr; | ||||||
|   raw_ptr<OffScreenRenderWidgetHostView> child_host_view_ = nullptr; |   raw_ptr<OffScreenRenderWidgetHostView> child_host_view_ = nullptr; | ||||||
|   std::set<OffScreenRenderWidgetHostView*> guest_host_views_; |   absl::flat_hash_set<OffScreenRenderWidgetHostView*> guest_host_views_; | ||||||
|   std::set<OffscreenViewProxy*> proxy_views_; |   absl::flat_hash_set<OffscreenViewProxy*> proxy_views_; | ||||||
| 
 | 
 | ||||||
|   const bool transparent_; |   const bool transparent_; | ||||||
|   const bool offscreen_use_shared_texture_; |   const bool offscreen_use_shared_texture_; | ||||||
|  |  | ||||||
|  | @ -7,10 +7,9 @@ | ||||||
| 
 | 
 | ||||||
| #include <gio/gio.h> | #include <gio/gio.h> | ||||||
| 
 | 
 | ||||||
| #include <set> |  | ||||||
| 
 |  | ||||||
| #include "base/memory/raw_ptr.h" | #include "base/memory/raw_ptr.h" | ||||||
| #include "base/memory/singleton.h" | #include "base/memory/singleton.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| #include "ui/base/glib/scoped_gsignal.h" | #include "ui/base/glib/scoped_gsignal.h" | ||||||
| #include "ui/gfx/x/xproto.h" | #include "ui/gfx/x/xproto.h" | ||||||
| 
 | 
 | ||||||
|  | @ -52,7 +51,7 @@ class GlobalMenuBarRegistrarX11 { | ||||||
| 
 | 
 | ||||||
|   // x11::Window which want to be registered, but haven't yet been because
 |   // x11::Window which want to be registered, but haven't yet been because
 | ||||||
|   // we're waiting for the proxy to become available.
 |   // we're waiting for the proxy to become available.
 | ||||||
|   std::set<x11::Window> live_windows_; |   absl::flat_hash_set<x11::Window> live_windows_; | ||||||
|   ScopedGSignal signal_; |   ScopedGSignal signal_; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -6,7 +6,6 @@ | ||||||
| #define ELECTRON_SHELL_BROWSER_USB_USB_CHOOSER_CONTEXT_H_ | #define ELECTRON_SHELL_BROWSER_USB_USB_CHOOSER_CONTEXT_H_ | ||||||
| 
 | 
 | ||||||
| #include <map> | #include <map> | ||||||
| #include <set> |  | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
|  | @ -20,6 +19,7 @@ | ||||||
| #include "mojo/public/cpp/bindings/remote.h" | #include "mojo/public/cpp/bindings/remote.h" | ||||||
| #include "services/device/public/mojom/usb_manager.mojom.h" | #include "services/device/public/mojom/usb_manager.mojom.h" | ||||||
| #include "services/device/public/mojom/usb_manager_client.mojom.h" | #include "services/device/public/mojom/usb_manager_client.mojom.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| #include "url/origin.h" | #include "url/origin.h" | ||||||
| 
 | 
 | ||||||
| namespace mojo { | namespace mojo { | ||||||
|  | @ -108,7 +108,7 @@ class UsbChooserContext : public KeyedService, | ||||||
|   base::queue<device::mojom::UsbDeviceManager::GetDevicesCallback> |   base::queue<device::mojom::UsbDeviceManager::GetDevicesCallback> | ||||||
|       pending_get_devices_requests_; |       pending_get_devices_requests_; | ||||||
| 
 | 
 | ||||||
|   std::map<url::Origin, std::set<std::string>> ephemeral_devices_; |   std::map<url::Origin, absl::flat_hash_set<std::string>> ephemeral_devices_; | ||||||
|   std::map<std::string, device::mojom::UsbDeviceInfoPtr> devices_; |   std::map<std::string, device::mojom::UsbDeviceInfoPtr> devices_; | ||||||
| 
 | 
 | ||||||
|   // Connection to |device_manager_instance_|.
 |   // Connection to |device_manager_instance_|.
 | ||||||
|  |  | ||||||
|  | @ -5,9 +5,9 @@ | ||||||
| #define ELECTRON_SHELL_RENDERER_ELECTRON_SANDBOXED_RENDERER_CLIENT_H_ | #define ELECTRON_SHELL_RENDERER_ELECTRON_SANDBOXED_RENDERER_CLIENT_H_ | ||||||
| 
 | 
 | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <set> |  | ||||||
| 
 | 
 | ||||||
| #include "shell/renderer/renderer_client_base.h" | #include "shell/renderer/renderer_client_base.h" | ||||||
|  | #include "third_party/abseil-cpp/absl/container/flat_hash_set.h" | ||||||
| 
 | 
 | ||||||
| namespace base { | namespace base { | ||||||
| class ProcessMetrics; | class ProcessMetrics; | ||||||
|  | @ -64,7 +64,7 @@ class ElectronSandboxedRendererClient : public RendererClientBase { | ||||||
|   // Getting main script context from web frame would lazily initializes
 |   // Getting main script context from web frame would lazily initializes
 | ||||||
|   // its script context. Doing so in a web page without scripts would trigger
 |   // its script context. Doing so in a web page without scripts would trigger
 | ||||||
|   // assertion, so we have to keep a book of injected web frames.
 |   // assertion, so we have to keep a book of injected web frames.
 | ||||||
|   std::set<content::RenderFrame*> injected_frames_; |   absl::flat_hash_set<content::RenderFrame*> injected_frames_; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| }  // namespace electron
 | }  // namespace electron
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Charles Kerr
				Charles Kerr