From 9633ce3dd4e9c7d5fe63af339d8072f2aee6fd9c Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Fri, 6 Nov 2026 09:08:09 +0100 Subject: [PATCH] refactor: normalize each system id once SelectionIndex.build and system_group called _norm_system_id 1.7 million times per manifest run for about a thousand ids, each through the manufacturer prefix loop. The function reads only its argument and two constant tables, so its answer is cached. Measured on the call volume of one manifest run (630 ids, 1,686,618 calls): 1.53 s uncached, 0.07 s cached. The end-to-end manifest run moves inside its own noise on this host (45.9 to 50.6 s across four runs). --- scripts/common.py | 4 ++++ tests/test_system_ids.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/scripts/common.py b/scripts/common.py index 50c90874d..1a88caaff 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -3036,12 +3036,16 @@ SYSTEM_ALIASES: dict[str, str] = { } +@functools.lru_cache(maxsize=None) def _norm_system_id(sid: str) -> str: """Normalize system ID for cross-platform matching. Resolves known aliases, then strips manufacturer prefixes and separators so that platform-specific IDs (e.g., "xbox", "nintendo-wiiu") match profile IDs (e.g., "microsoft-xbox", "nintendo-wii-u"). + + A function of the string and two constant tables: a manifest run asks it + 1.7 million times for about 1,100 ids. """ s = sid.lower().replace("_", "-") s = SYSTEM_ALIASES.get(s, s) diff --git a/tests/test_system_ids.py b/tests/test_system_ids.py index cc054d902..1b8098c58 100644 --- a/tests/test_system_ids.py +++ b/tests/test_system_ids.py @@ -73,6 +73,18 @@ class PlatformNamesReachTheProfileSystem(unittest.TestCase): with self.subTest(alias=alias): self.assertEqual(_norm_system_id(alias), _norm_system_id(canonical)) + def test_each_id_is_normalized_once(self): + """A manifest run asked 1.7 million times for about a thousand ids, + 1.5 seconds of prefix loops: the answer is kept per id.""" + _norm_system_id.cache_clear() + for _ in range(3): + _norm_system_id("Nintendo_WiiU") + info = _norm_system_id.cache_info() + self.assertEqual((info.misses, info.hits), (1, 2)) + self.assertEqual( + _norm_system_id("Nintendo_WiiU"), _norm_system_id.__wrapped__("Nintendo_WiiU") + ) + class AFoldedClaimKeepsItsProof(unittest.TestCase): """One spelling per machine folds bsnes-hd's SGB1.sfc onto bsnes's: the