From 2bae8eeed0eae75d782da097e78826650e1ac498 Mon Sep 17 00:00:00 2001 From: Numerlor <25886452+Numerlor@users.noreply.github.com> Date: Thu, 12 Nov 2020 19:44:26 +0100 Subject: Intern relative url paths Group name interning was also moved to the DocItem creation to group the behaviour --- bot/exts/info/doc/_cog.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/bot/exts/info/doc/_cog.py b/bot/exts/info/doc/_cog.py index 822f682bf..ecc648d89 100644 --- a/bot/exts/info/doc/_cog.py +++ b/bot/exts/info/doc/_cog.py @@ -218,10 +218,8 @@ class DocCog(commands.Cog): for symbol, relative_doc_url in items: if "/" in symbol: continue # skip unreachable symbols with slashes - # Intern the group names since they're reused in all the DocItems - # to remove unnecessary memory consumption from them being unique objects - group_name = sys.intern(group.split(":")[1]) + group_name = group.split(":")[1] if (original_symbol := self.doc_symbols.get(symbol)) is not None: if group_name in FORCE_PREFIX_GROUPS: symbol = f"{group_name}.{symbol}" @@ -240,7 +238,14 @@ class DocCog(commands.Cog): self.renamed_symbols.add(symbol) relative_url_path, _, symbol_id = relative_doc_url.partition("#") - symbol_item = DocItem(api_package_name, group_name, base_url, relative_url_path, symbol_id) + # Intern fields that have shared content so we're not storing unique strings for every object + symbol_item = DocItem( + api_package_name, + sys.intern(group_name), + base_url, + sys.intern(relative_url_path), + symbol_id + ) self.doc_symbols[symbol] = symbol_item self.item_fetcher.add_item(symbol_item) -- cgit v1.2.3