From bd0621eeffd0f4266452ae445e4fc57d6df6a662 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 2 Mar 2020 02:55:08 +0300 Subject: [PATCH] Optimize adding new files to FileStats. GitOrigin-RevId: bceb6a4540f45339fed92c1a83b19d1981634836 --- td/telegram/files/FileGcWorker.cpp | 10 +++++----- td/telegram/files/FileStats.cpp | 15 +++++++++++++-- td/telegram/files/FileStats.h | 2 ++ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/td/telegram/files/FileGcWorker.cpp b/td/telegram/files/FileGcWorker.cpp index cfebd0fc2..1f12059a8 100644 --- a/td/telegram/files/FileGcWorker.cpp +++ b/td/telegram/files/FileGcWorker.cpp @@ -99,23 +99,23 @@ void FileGcWorker::run_gc(const FileGcParameters ¶meters, std::vector(info.file_type)]) { type_immunity_ignored_cnt++; - new_stats.add(FullFileInfo(info)); + new_stats.add_copy(info); return true; } if (td::contains(parameters.exclude_owner_dialog_ids, info.owner_dialog_id)) { exclude_owner_dialog_id_ignored_cnt++; - new_stats.add(FullFileInfo(info)); + new_stats.add_copy(info); return true; } if (!parameters.owner_dialog_ids.empty() && !td::contains(parameters.owner_dialog_ids, info.owner_dialog_id)) { owner_dialog_id_ignored_cnt++; - new_stats.add(FullFileInfo(info)); + new_stats.add_copy(info); return true; } if (info.mtime_nsec * 1e-9 > now - parameters.immunity_delay) { // new files are immune to gc time_immunity_ignored_cnt++; - new_stats.add(FullFileInfo(info)); + new_stats.add_copy(info); return true; } @@ -167,7 +167,7 @@ void FileGcWorker::run_gc(const FileGcParameters ¶meters, std::vector all_files; + void add_copy(const FullFileInfo &info); void add(FullFileInfo &&info); void apply_dialog_limit(int32 limit); @@ -87,6 +88,7 @@ struct FileStats { FileTypeStat get_total_nontemp_stat() const; private: + void add_impl(const FullFileInfo &info); void add(StatByType &by_type, FileType file_type, int64 size); };