mirror of https://github.com/acidanthera/audk.git
BaseTools: cache the defined Guid tool to improve the performance
Current GenFds Tool class GuidSection() is parsing the tools_def.txt for every GUID'ed section that has a GUID defined tool, it cause a bad performance. so this patch cache the defined Guid tool to improve the performance. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
024bdafc68
commit
213ae07750
|
@ -1,7 +1,7 @@
|
||||||
## @file
|
## @file
|
||||||
# Global variables for GenFds
|
# Global variables for GenFds
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -68,6 +68,7 @@ class GenFdsGlobalVariable:
|
||||||
BuildRuleFamily = "MSFT"
|
BuildRuleFamily = "MSFT"
|
||||||
ToolChainFamily = "MSFT"
|
ToolChainFamily = "MSFT"
|
||||||
__BuildRuleDatabase = None
|
__BuildRuleDatabase = None
|
||||||
|
GuidToolDefinition = {}
|
||||||
|
|
||||||
#
|
#
|
||||||
# The list whose element are flags to indicate if large FFS or SECTION files exist in FV.
|
# The list whose element are flags to indicate if large FFS or SECTION files exist in FV.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## @file
|
## @file
|
||||||
# process GUIDed section generation
|
# process GUIDed section generation
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
#
|
#
|
||||||
# This program and the accompanying materials
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
|
@ -268,6 +268,10 @@ class GuidSection(GuidSectionClassObject) :
|
||||||
if Target + '_' + ToolChain + '_' + Arch not in self.KeyStringList:
|
if Target + '_' + ToolChain + '_' + Arch not in self.KeyStringList:
|
||||||
self.KeyStringList.append(Target + '_' + ToolChain + '_' + Arch)
|
self.KeyStringList.append(Target + '_' + ToolChain + '_' + Arch)
|
||||||
|
|
||||||
|
if GenFdsGlobalVariable.GuidToolDefinition:
|
||||||
|
if self.NameGuid in GenFdsGlobalVariable.GuidToolDefinition.keys():
|
||||||
|
return GenFdsGlobalVariable.GuidToolDefinition[self.NameGuid]
|
||||||
|
|
||||||
ToolDefinition = ToolDefClassObject.ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary
|
ToolDefinition = ToolDefClassObject.ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary
|
||||||
ToolPathTmp = None
|
ToolPathTmp = None
|
||||||
ToolOption = None
|
ToolOption = None
|
||||||
|
@ -298,7 +302,7 @@ class GuidSection(GuidSectionClassObject) :
|
||||||
if ToolPathTmp != ToolPath:
|
if ToolPathTmp != ToolPath:
|
||||||
EdkLogger.error("GenFds", GENFDS_ERROR, "Don't know which tool to use, %s or %s ?" % (ToolPathTmp, ToolPath))
|
EdkLogger.error("GenFds", GENFDS_ERROR, "Don't know which tool to use, %s or %s ?" % (ToolPathTmp, ToolPath))
|
||||||
|
|
||||||
|
GenFdsGlobalVariable.GuidToolDefinition[self.NameGuid] = (ToolPathTmp, ToolOption)
|
||||||
return ToolPathTmp, ToolOption
|
return ToolPathTmp, ToolOption
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue