From 193715b920750a6bab41b691cb7de25bf39dce53 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Sat, 16 Nov 2024 15:24:34 +0100 Subject: utils: optimize PerMachine There is no need to create and look up a dictionary when MachineChoice is an enum, and there is no need to create a PerMachine object on every __setitem__ of another PerMachine object. Signed-off-by: Paolo Bonzini --- mesonbuild/utils/universal.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/mesonbuild/utils/universal.py b/mesonbuild/utils/universal.py index 76a6df8da..8012dcee3 100644 --- a/mesonbuild/utils/universal.py +++ b/mesonbuild/utils/universal.py @@ -473,6 +473,10 @@ def classify_unity_sources(compilers: T.Iterable['Compiler'], sources: T.Sequenc return compsrclist +MACHINE_NAMES = ['build', 'host'] +MACHINE_PREFIXES = ['build.', ''] + + class MachineChoice(enum.IntEnum): """Enum class representing one of the two abstract machine names used in @@ -486,10 +490,10 @@ class MachineChoice(enum.IntEnum): return f'{self.get_lower_case_name()} machine' def get_lower_case_name(self) -> str: - return PerMachine('build', 'host')[self] + return MACHINE_NAMES[self.value] def get_prefix(self) -> str: - return PerMachine('build.', '')[self] + return MACHINE_PREFIXES[self.value] class PerMachine(T.Generic[_T]): @@ -498,10 +502,7 @@ class PerMachine(T.Generic[_T]): self.host = host def __getitem__(self, machine: MachineChoice) -> _T: - return { - MachineChoice.BUILD: self.build, - MachineChoice.HOST: self.host, - }[machine] + return [self.build, self.host][machine.value] def __setitem__(self, machine: MachineChoice, val: _T) -> None: setattr(self, machine.get_lower_case_name(), val) -- cgit v1.3