OK. Reviewed-by: Liming Gao <[email protected]> >-----Original Message----- >From: Feng, Bob C >Sent: Monday, July 02, 2018 11:13 AM >To: Gao, Liming <[email protected]>; [email protected] >Cc: Feng, Bob C <[email protected]> >Subject: RE: [Patch] BaseTool: Add cache for the result of SkipAutogen. > >Hi Liming, > >Based on my testing, a module will enter the CanSkip() multiple times even >after CanSkip() return True. >In this patch, I cache the module after CanSkip() return True to save the cost >of later CanSkip() evaluation. >I think the CanSkip() will always return True after it return True at first >time in >one build process. > >Thanks, >Bob > >-----Original Message----- >From: Gao, Liming >Sent: Monday, July 02, 2018 10:53 AM >To: Feng, Bob C <[email protected]>; [email protected] >Subject: RE: [Patch] BaseTool: Add cache for the result of SkipAutogen. > >Bob: > When will this cache take effective? > >Thanks >Liming >>-----Original Message----- >>From: Feng, Bob C >>Sent: Monday, July 02, 2018 9:16 AM >>To: [email protected] >>Cc: Feng, Bob C <[email protected]>; Gao, Liming >><[email protected]> >>Subject: [Patch] BaseTool: Add cache for the result of SkipAutogen. >> >>Add a cache for the value of skip ModuleAutoGen process flag. This >>cache can improve build performance. >> >>Contributed-under: TianoCore Contribution Agreement 1.1 >>Signed-off-by: Bob Feng <[email protected]> >>Cc: Liming Gao <[email protected]> >>--- >> BaseTools/Source/Python/AutoGen/AutoGen.py | 4 ++++ >> BaseTools/Source/Python/Common/GlobalData.py | 1 + >> 2 files changed, 5 insertions(+) >> >>diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py >>b/BaseTools/Source/Python/AutoGen/AutoGen.py >>index 381dbc0a71..fc242992b7 100644 >>--- a/BaseTools/Source/Python/AutoGen/AutoGen.py >>+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py >>@@ -4305,15 +4305,18 @@ class ModuleAutoGen(AutoGen): >> >> ## Decide whether we can skip the ModuleAutoGen process >> def CanSkipbyHash(self): >> if GlobalData.gUseHashCache: >> return not self.GenModuleHash() >>+ return False >> >> ## Decide whether we can skip the ModuleAutoGen process >> # If any source file is newer than the module than we cannot skip >> # >> def CanSkip(self): >>+ if self.MetaFile in GlobalData.gSikpAutoGenCache: >>+ return True >> if not os.path.exists(self.GetTimeStampPath()): >> return False >> #last creation time of the module >> DstTimeStamp = os.stat(self.GetTimeStampPath())[8] >> >>@@ -4328,10 +4331,11 @@ class ModuleAutoGen(AutoGen): >> return False >> if source not in ModuleAutoGen.TimeDict : >> ModuleAutoGen.TimeDict[source] = os.stat(source)[8] >> if ModuleAutoGen.TimeDict[source] > DstTimeStamp: >> return False >>+ GlobalData.gSikpAutoGenCache.add(self.MetaFile) >> return True >> >> def GetTimeStampPath(self): >> if self._TimeStampPath is None: >> self._TimeStampPath = os.path.join(self.MakeFileDir, >>'AutoGenTimeStamp') >>diff --git a/BaseTools/Source/Python/Common/GlobalData.py >>b/BaseTools/Source/Python/Common/GlobalData.py >>index afb3d8f020..fac7cde708 100644 >>--- a/BaseTools/Source/Python/Common/GlobalData.py >>+++ b/BaseTools/Source/Python/Common/GlobalData.py >>@@ -111,5 +111,6 @@ gBinCacheDest = None gBinCacheSource = None >>gPlatformHash = None gPackageHash = {} gModuleHash = {} >>gEnableGenfdsMultiThread = False >>+gSikpAutoGenCache = set() >>-- >>2.16.2.windows.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

