mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Use faster containers for bulk-populated custom emoji maps
Replace base::flat_map (sorted vector with O(n) insertion) with std::unordered_map for CustomEmojiManager::_instances and std::map for EmojiListWidget::_customEmoji. These maps accumulate ~8000 entries during startup with unsorted keys, causing O(n²) total insertion cost. This change reduces refreshCustom() from ~3s to ~50ms (57x speedup).
This commit is contained in:
@@ -13,6 +13,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "ui/round_rect.h"
|
||||
#include "base/timer.h"
|
||||
|
||||
#include <map>
|
||||
|
||||
class StickerPremiumMark;
|
||||
|
||||
namespace style {
|
||||
@@ -438,7 +440,7 @@ private:
|
||||
QVector<EmojiPtr> _emoji[kEmojiSectionCount];
|
||||
std::vector<CustomSet> _custom;
|
||||
base::flat_set<DocumentId> _restrictedCustomList;
|
||||
base::flat_map<EmojiStatusId, CustomEmojiInstance> _customEmoji;
|
||||
std::map<EmojiStatusId, CustomEmojiInstance> _customEmoji;
|
||||
base::flat_map<
|
||||
DocumentId,
|
||||
std::unique_ptr<Ui::Text::CustomEmoji>> _customRecent;
|
||||
|
||||
@@ -149,7 +149,7 @@ private:
|
||||
const not_null<Session*> _owner;
|
||||
|
||||
std::array<
|
||||
base::flat_map<
|
||||
std::unordered_map<
|
||||
DocumentId,
|
||||
std::unique_ptr<Ui::CustomEmoji::Instance>>,
|
||||
kSizeCount> _instances;
|
||||
|
||||
Reference in New Issue
Block a user