From: Carsey, Jaben Date: Thu, 5 Apr 2018 23:13:52 +0000 (+0800) Subject: BaseTools: sets are faster to check via "in" due to hashing X-Git-Tag: edk2-stable201903~1951 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=b74b419a0156fbc60423c721165b3741469bc1a1 BaseTools: sets are faster to check via "in" due to hashing switch list to set: 1)we dont care about order 2)we only check for membership. then remove ".keys()" from dict looping: allow generators opportunity to optimize Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey Reviewed-by: Yonghong Zhu --- diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index cf6dcc6ab4..390194f428 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -365,9 +365,9 @@ class WorkspaceAutoGen(AutoGen): MetaFile_cache = {} for Arch in self.ArchList: Platform_cache[Arch] = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain] - MetaFile_cache[Arch] = [] - for Pkey in Platform_cache[Arch].Modules.keys(): - MetaFile_cache[Arch].append(Platform_cache[Arch].Modules[Pkey].MetaFile) + MetaFile_cache[Arch] = set() + for Pkey in Platform_cache[Arch].Modules: + MetaFile_cache[Arch].add(Platform_cache[Arch].Modules[Pkey].MetaFile) for Inf in self.FdfProfile.InfDict[key]: ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch) for Arch in self.ArchList: @@ -382,9 +382,9 @@ class WorkspaceAutoGen(AutoGen): for Arch in self.ArchList: if Arch == key: Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain] - MetaFileList = [] - for Pkey in Platform.Modules.keys(): - MetaFileList.append(Platform.Modules[Pkey].MetaFile) + MetaFileList = set() + for Pkey in Platform.Modules: + MetaFileList.add(Platform.Modules[Pkey].MetaFile) for Inf in self.FdfProfile.InfDict[key]: ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch) if ModuleFile in MetaFileList: