浏览代码

Using reserve() for optimization inserts, marked unused pair items and minor code refactor

Herman Semenov 2 年之前
父节点
当前提交
e886f27816

+ 3 - 1
src/audio_core/device/audio_buffers.h

@@ -54,7 +54,8 @@ public:
         const s32 to_register{std::min(std::min(appended_count, BufferAppendLimit),
                                        BufferAppendLimit - registered_count)};
 
-        for (s32 i = 0; i < to_register; i++) {
+        out_buffers.reserve(to_register);
+        for (s32 i = 0; i < to_register; ++i) {
             s32 index{appended_index - appended_count};
             if (index < 0) {
                 index += N;
@@ -180,6 +181,7 @@ public:
             return 0;
         }
 
+        buffers_flushed.reserve(registered_count + appended_count);
         while (registered_count > 0) {
             auto index{registered_index - registered_count};
             if (index < 0) {

+ 1 - 0
src/core/core.cpp

@@ -80,6 +80,7 @@ FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
     if (filename == "00") {
         const auto dir = vfs->OpenDirectory(dir_name, FileSys::OpenMode::Read);
         std::vector<FileSys::VirtualFile> concat;
+        concat.reserve(0x10);
 
         for (u32 i = 0; i < 0x10; ++i) {
             const auto file_name = fmt::format("{:02X}", i);

+ 1 - 0
src/core/debugger/gdbstub.cpp

@@ -481,6 +481,7 @@ void GDBStub::HandleQuery(std::string_view command) {
         // beginning of list
         const auto& threads = GetProcess()->GetThreadList();
         std::vector<std::string> thread_ids;
+        thread_ids.reserve(threads.size());
         for (const auto& thread : threads) {
             thread_ids.push_back(fmt::format("{:x}", thread.GetThreadId()));
         }

+ 1 - 1
src/core/file_sys/registered_cache.cpp

@@ -261,7 +261,7 @@ std::vector<NcaID> PlaceholderCache::List() const {
     std::vector<NcaID> out;
     for (const auto& sdir : dir->GetSubdirectories()) {
         for (const auto& file : sdir->GetFiles()) {
-            const auto name = file->GetName();
+            const auto& name = file->GetName();
             if (name.length() == 36 && name.ends_with(".nca")) {
                 out.push_back(Common::HexStringToArray<0x10>(name.substr(0, 32)));
             }

+ 2 - 0
src/core/file_sys/submission_package.cpp

@@ -117,7 +117,9 @@ std::vector<std::shared_ptr<NCA>> NSP::GetNCAsCollapsed() const {
     if (extracted)
         LOG_WARNING(Service_FS, "called on an NSP that is of type extracted.");
     std::vector<std::shared_ptr<NCA>> out;
+    out.reserve(ncas.size());
     for (const auto& map : ncas) {
+        out.reserve(map.second.size());
         for (const auto& inner_map : map.second)
             out.push_back(inner_map.second);
     }

+ 2 - 2
src/core/file_sys/system_archive/ng_word.cpp

@@ -24,7 +24,7 @@ constexpr std::array<u8, 30> WORD_TXT{
 
 VirtualDir NgWord1() {
     std::vector<VirtualFile> files;
-    files.reserve(NgWord1Data::NUMBER_WORD_TXT_FILES);
+    files.reserve(files.size() + 2);
 
     for (std::size_t i = 0; i < files.size(); ++i) {
         files.push_back(MakeArrayFile(NgWord1Data::WORD_TXT, fmt::format("{}.txt", i)));
@@ -54,7 +54,7 @@ constexpr std::array<u8, 0x2C> AC_NX_DATA{
 
 VirtualDir NgWord2() {
     std::vector<VirtualFile> files;
-    files.reserve(NgWord2Data::NUMBER_AC_NX_FILES * 3);
+    files.reserve(NgWord2Data::NUMBER_AC_NX_FILES + 4);
 
     for (std::size_t i = 0; i < NgWord2Data::NUMBER_AC_NX_FILES; ++i) {
         files.push_back(MakeArrayFile(NgWord2Data::AC_NX_DATA, fmt::format("ac_{}_b1_nx", i)));

+ 3 - 0
src/core/file_sys/system_archive/time_zone_binary.cpp

@@ -37,6 +37,7 @@ const static std::map<std::string, const std::map<const char*, const std::vector
 
 static void GenerateFiles(std::vector<VirtualFile>& directory,
                           const std::map<const char*, const std::vector<u8>>& files) {
+    directory.reserve(files.size());
     for (const auto& [filename, data] : files) {
         const auto data_copy{data};
         const std::string filename_copy{filename};
@@ -54,6 +55,7 @@ static std::vector<VirtualFile> GenerateZoneinfoFiles() {
 
 VirtualDir TimeZoneBinary() {
     std::vector<VirtualDir> america_sub_dirs;
+    america_sub_dirs.reserve(tzdb_america_dirs.size());
     for (const auto& [dir_name, files] : tzdb_america_dirs) {
         std::vector<VirtualFile> vfs_files;
         GenerateFiles(vfs_files, files);
@@ -62,6 +64,7 @@ VirtualDir TimeZoneBinary() {
     }
 
     std::vector<VirtualDir> zoneinfo_sub_dirs;
+    zoneinfo_sub_dirs.reserve(tzdb_zoneinfo_dirs.size());
     for (const auto& [dir_name, files] : tzdb_zoneinfo_dirs) {
         std::vector<VirtualFile> vfs_files;
         GenerateFiles(vfs_files, files);

+ 4 - 2
src/core/file_sys/vfs/vfs_cached.cpp

@@ -38,7 +38,8 @@ VirtualDir CachedVfsDirectory::GetSubdirectory(std::string_view dir_name) const
 
 std::vector<VirtualFile> CachedVfsDirectory::GetFiles() const {
     std::vector<VirtualFile> out;
-    for (auto& [file_name, file] : files) {
+    out.reserve(files.size());
+    for (const auto& [_, file] : files) {
         out.push_back(file);
     }
     return out;
@@ -46,7 +47,8 @@ std::vector<VirtualFile> CachedVfsDirectory::GetFiles() const {
 
 std::vector<VirtualDir> CachedVfsDirectory::GetSubdirectories() const {
     std::vector<VirtualDir> out;
-    for (auto& [dir_name, dir] : dirs) {
+    out.reserve(dirs.size());
+    for (auto& [_, dir] : dirs) {
         out.push_back(dir);
     }
     return out;

+ 3 - 3
src/core/hle/service/am/window_system.cpp

@@ -121,7 +121,7 @@ void WindowSystem::RequestAppletVisibilityState(Applet& applet, bool visible) {
 void WindowSystem::OnOperationModeChanged() {
     std::scoped_lock lk{m_lock};
 
-    for (const auto& [aruid, applet] : m_applets) {
+    for (const auto& [_, applet] : m_applets) {
         std::scoped_lock lk2{applet->lock};
         applet->lifecycle_manager.OnOperationAndPerformanceModeChanged();
     }
@@ -130,7 +130,7 @@ void WindowSystem::OnOperationModeChanged() {
 void WindowSystem::OnExitRequested() {
     std::scoped_lock lk{m_lock};
 
-    for (const auto& [aruid, applet] : m_applets) {
+    for (const auto& [_, applet] : m_applets) {
         std::scoped_lock lk2{applet->lock};
         applet->lifecycle_manager.RequestExit();
     }
@@ -156,7 +156,7 @@ void WindowSystem::OnHomeButtonPressed(ButtonPressDuration type) {
 
 void WindowSystem::PruneTerminatedAppletsLocked() {
     for (auto it = m_applets.begin(); it != m_applets.end(); /* ... */) {
-        const auto& [aruid, applet] = *it;
+        const auto& [_, applet] = *it;
 
         std::scoped_lock lk{applet->lock};
 

+ 1 - 1
src/core/hle/service/ldn/lan_discovery.cpp

@@ -119,7 +119,7 @@ Result LANDiscovery::Scan(std::span<NetworkInfo> out_networks, s16& out_count,
     std::this_thread::sleep_for(std::chrono::seconds(1));
 
     std::scoped_lock lock{packet_mutex};
-    for (const auto& [key, info] : scan_results) {
+    for (const auto& [_, info] : scan_results) {
         if (out_count >= static_cast<s16>(out_networks.size())) {
             break;
         }

+ 1 - 1
src/core/hle/service/ns/application_manager_interface.cpp

@@ -348,7 +348,7 @@ Result IApplicationManagerInterface::ListApplicationRecord(
     size_t i = 0;
     u8 ii = 24;
 
-    for (const auto& [slot, game] : installed_games) {
+    for (const auto& [_, game] : installed_games) {
         if (i >= limit) {
             break;
         }

+ 1 - 1
src/core/hle/service/sm/sm.cpp

@@ -28,7 +28,7 @@ ServiceManager::ServiceManager(Kernel::KernelCore& kernel_) : kernel{kernel_} {
 }
 
 ServiceManager::~ServiceManager() {
-    for (auto& [name, port] : service_ports) {
+    for (auto& [_, port] : service_ports) {
         port->Close();
     }
 

+ 2 - 2
src/input_common/drivers/sdl_driver.cpp

@@ -571,7 +571,7 @@ SDLDriver::~SDLDriver() {
 std::vector<Common::ParamPackage> SDLDriver::GetInputDevices() const {
     std::vector<Common::ParamPackage> devices;
     std::unordered_map<int, std::shared_ptr<SDLJoystick>> joycon_pairs;
-    for (const auto& [key, value] : joystick_map) {
+    for (const auto& [_, value] : joystick_map) {
         for (const auto& joystick : value) {
             if (!joystick->GetSDLJoystick()) {
                 continue;
@@ -591,7 +591,7 @@ std::vector<Common::ParamPackage> SDLDriver::GetInputDevices() const {
     }
 
     // Add dual controllers
-    for (const auto& [key, value] : joystick_map) {
+    for (const auto& [_, value] : joystick_map) {
         for (const auto& joystick : value) {
             if (joystick->IsJoyconRight()) {
                 if (!joycon_pairs.contains(joystick->GetPort())) {

+ 1 - 1
src/suyu/configuration/configure_applets.cpp

@@ -69,7 +69,7 @@ void ConfigureApplets::Setup(const ConfigurationShared::Builder& builder) {
 
         applets_hold.emplace(setting->Id(), widget);
     }
-    for (const auto& [label, widget] : applets_hold) {
+    for (const auto& [_, widget] : applets_hold) {
         library_applets_layout.addWidget(widget);
     }
 }

+ 1 - 1
src/suyu/configuration/configure_audio.cpp

@@ -164,7 +164,7 @@ void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) {
         }
     }
 
-    for (const auto& [id, widget] : hold) {
+    for (const auto& [_, widget] : hold) {
         layout.addWidget(widget);
     }
 }

+ 1 - 1
src/suyu/configuration/configure_cpu.cpp

@@ -79,7 +79,7 @@ void ConfigureCpu::Setup(const ConfigurationShared::Builder& builder) {
         }
     }
 
-    for (const auto& [label, widget] : unsafe_hold) {
+    for (const auto& [_, widget] : unsafe_hold) {
         unsafe_layout->addWidget(widget);
     }
 

+ 2 - 2
src/suyu/configuration/configure_general.cpp

@@ -81,10 +81,10 @@ void ConfigureGeneral::Setup(const ConfigurationShared::Builder& builder) {
         }
     }
 
-    for (const auto& [id, widget] : general_hold) {
+    for (const auto& [_, widget] : general_hold) {
         general_layout.addWidget(widget);
     }
-    for (const auto& [id, widget] : linux_hold) {
+    for (const auto& [_, widget] : linux_hold) {
         linux_layout.addWidget(widget);
     }
 }

+ 1 - 1
src/suyu/configuration/configure_graphics.cpp

@@ -358,7 +358,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
         }
     }
 
-    for (const auto& [id, widget] : hold_graphics) {
+    for (const auto& [_, widget] : hold_graphics) {
         graphics_layout.addWidget(widget);
     }
 

+ 1 - 1
src/suyu/configuration/configure_graphics_advanced.cpp

@@ -53,7 +53,7 @@ void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builde
             checkbox_enable_compute_pipelines = widget;
         }
     }
-    for (const auto& [id, widget] : hold) {
+    for (const auto& [_, widget] : hold) {
         layout.addWidget(widget);
     }
 }

+ 1 - 1
src/suyu/configuration/configure_linux_tab.cpp

@@ -50,7 +50,7 @@ void ConfigureLinuxTab::Setup(const ConfigurationShared::Builder& builder) {
         linux_hold.insert({setting->Id(), widget});
     }
 
-    for (const auto& [id, widget] : linux_hold) {
+    for (const auto& [_, widget] : linux_hold) {
         linux_layout.addWidget(widget);
     }
 }

+ 2 - 2
src/suyu/configuration/configure_system.cpp

@@ -174,10 +174,10 @@ void ConfigureSystem::Setup(const ConfigurationShared::Builder& builder) {
             widget->deleteLater();
         }
     }
-    for (const auto& [label, widget] : core_hold) {
+    for (const auto& [_, widget] : core_hold) {
         core_layout.addWidget(widget);
     }
-    for (const auto& [id, widget] : system_hold) {
+    for (const auto& [_, widget] : system_hold) {
         system_layout.addWidget(widget);
     }
 }

+ 1 - 1
src/suyu/configuration/configure_ui.cpp

@@ -83,7 +83,7 @@ static void PopulateResolutionComboBox(QComboBox* screenshot_height, QWidget* pa
     const auto& enumeration =
         Settings::EnumMetadata<Settings::ResolutionSetup>::Canonicalizations();
     std::set<u32> resolutions{};
-    for (const auto& [name, value] : enumeration) {
+    for (const auto& [_, value] : enumeration) {
         const float up_factor = GetUpFactor(value);
         u32 height_undocked = Layout::ScreenUndocked::Height * up_factor;
         u32 height_docked = Layout::ScreenDocked::Height * up_factor;

+ 1 - 1
src/suyu/configuration/input_profiles.cpp

@@ -61,7 +61,7 @@ std::vector<std::string> InputProfiles::GetInputProfileNames() {
 
     auto it = map_profiles.cbegin();
     while (it != map_profiles.cend()) {
-        const auto& [profile_name, config] = *it;
+        const auto& [profile_name, _] = *it;
         if (!ProfileExistsInFilesystem(profile_name)) {
             it = map_profiles.erase(it);
             continue;

+ 2 - 2
src/suyu/configuration/shared_widget.cpp

@@ -135,7 +135,7 @@ QWidget* Widget::CreateCombobox(std::function<std::string()>& serializer,
     const ComboboxTranslations* enumeration{nullptr};
     if (combobox_enumerations.contains(type)) {
         enumeration = &combobox_enumerations.at(type);
-        for (const auto& [id, name] : *enumeration) {
+        for (const auto& [_, name] : *enumeration) {
             combobox->addItem(name);
         }
     } else {
@@ -223,7 +223,7 @@ QWidget* Widget::CreateRadioGroup(std::function<std::string()>& serializer,
     };
 
     if (!Settings::IsConfiguringGlobal()) {
-        for (const auto& [id, button] : radio_buttons) {
+        for (const auto& [_, button] : radio_buttons) {
             QObject::connect(button, &QAbstractButton::clicked, [touch]() { touch(); });
         }
     }

+ 1 - 1
src/suyu/play_time_manager.cpp

@@ -87,7 +87,7 @@ std::optional<std::filesystem::path> GetCurrentUserPlayTimePath(
     std::vector<PlayTimeElement> elements;
     elements.reserve(play_time_db.size());
 
-    for (auto& [program_id, play_time] : play_time_db) {
+    for (const auto& [program_id, play_time] : play_time_db) {
         if (program_id != 0) {
             elements.push_back(PlayTimeElement{program_id, play_time});
         }

+ 1 - 1
src/tests/video_core/memory_tracker.cpp

@@ -45,7 +45,7 @@ public:
 
     [[nodiscard]] unsigned Count() const noexcept {
         unsigned count = 0;
-        for (const auto& [index, value] : page_table) {
+        for (const auto& [_, value] : page_table) {
             count += value;
         }
         return count;

+ 2 - 2
src/video_core/host1x/host1x.h

@@ -45,7 +45,7 @@ public:
         // Vic does not know which nvdec is producing frames for it, so search all the fds here for
         // the given offset.
         for (auto& map : m_presentation_order) {
-            for (auto& [offset, frame] : map.second) {
+            for (auto& [offset, _] : map.second) {
                 if (offset == search_offset) {
                     return map.first;
                 }
@@ -53,7 +53,7 @@ public:
         }
 
         for (auto& map : m_decode_order) {
-            for (auto& [offset, frame] : map.second) {
+            for (auto& [offset, _] : map.second) {
                 if (offset == search_offset) {
                     return map.first;
                 }