]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools: sets are faster to check via "in" due to hashing
authorCarsey, Jaben </o=Intel/ou=Americas01/cn=Workers/cn=Carsey, Jaben>
Thu, 5 Apr 2018 23:13:52 +0000 (07:13 +0800)
committerYonghong Zhu <yonghong.zhu@intel.com>
Tue, 10 Apr 2018 02:05:11 +0000 (10:05 +0800)
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 <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
BaseTools/Source/Python/AutoGen/AutoGen.py

index cf6dcc6ab4ddf58dee48eecbeb3b0c9dba428e79..390194f4286fbab48722bd8f33b40f1a1bce8e1c 100644 (file)
@@ -365,9 +365,9 @@ class WorkspaceAutoGen(AutoGen):
                     MetaFile_cache = {}\r
                     for Arch in self.ArchList:\r
                         Platform_cache[Arch] = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
-                        MetaFile_cache[Arch] = []\r
-                        for Pkey in Platform_cache[Arch].Modules.keys():\r
-                            MetaFile_cache[Arch].append(Platform_cache[Arch].Modules[Pkey].MetaFile)\r
+                        MetaFile_cache[Arch] = set()\r
+                        for Pkey in Platform_cache[Arch].Modules:\r
+                            MetaFile_cache[Arch].add(Platform_cache[Arch].Modules[Pkey].MetaFile)\r
                     for Inf in self.FdfProfile.InfDict[key]:\r
                         ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch)\r
                         for Arch in self.ArchList:\r
@@ -382,9 +382,9 @@ class WorkspaceAutoGen(AutoGen):
                     for Arch in self.ArchList:\r
                         if Arch == key:\r
                             Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
-                            MetaFileList = []\r
-                            for Pkey in Platform.Modules.keys():\r
-                                MetaFileList.append(Platform.Modules[Pkey].MetaFile)\r
+                            MetaFileList = set()\r
+                            for Pkey in Platform.Modules:\r
+                                MetaFileList.add(Platform.Modules[Pkey].MetaFile)\r
                             for Inf in self.FdfProfile.InfDict[key]:\r
                                 ModuleFile = PathClass(NormPath(Inf), GlobalData.gWorkspace, Arch)\r
                                 if ModuleFile in MetaFileList:\r