From c07f0d9205c0f0f43a9cd56fb7b1fec701f9bd3b Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 03:37:57 +0200 Subject: [PATCH] refactor: parse emulator profiles once per process The alias-free profile set was parsed separately from the full one, so a process asking for both read the 534 profiles twice, 1.6 s of a site build. It is now a filter over the full set. --- scripts/common.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/common.py b/scripts/common.py index 48ea95b6..510faea5 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -1784,6 +1784,16 @@ def load_emulator_profiles( cache_key = (os.path.realpath(emulators_dir), skip_aliases) if cache_key in _emulator_profiles_cache: return _emulator_profiles_cache[cache_key] + if skip_aliases: + # A filter over the full set: parsed once, 534 YAML files cost 1.6 s + # every time a process asked for both variants. + profiles = { + name: profile + for name, profile in load_emulator_profiles(emulators_dir, False).items() + if profile.get("type") != "alias" + } + _emulator_profiles_cache[cache_key] = profiles + return profiles try: import yaml except ImportError: @@ -1808,8 +1818,6 @@ def load_emulator_profiles( profile = yaml_load(fh) or {} if "emulator" not in profile: continue - if skip_aliases and profile.get("type") == "alias": - continue _normalize_hash_fields(profile) profiles[f.stem] = profile _emulator_profiles_cache[cache_key] = profiles