!2786 Optimization for ast_cache

Merge pull request !2786 from Kang/optimization
This commit is contained in:
mindspore-ci-bot 2020-07-01 16:44:03 +08:00 committed by Gitee
commit db94c5fb0f
2 changed files with 3 additions and 13 deletions

View File

@ -345,16 +345,6 @@ class Parser:
self.function_name = fn.__name__ self.function_name = fn.__name__
self.col_offset = 0 self.col_offset = 0
@classmethod
def get_cache(cls, key):
"""Get the value of the ast_cache dictionary"""
return cls.ast_cache.get(key)
@classmethod
def insert_cache(cls, key, value):
"""Insert elements to the ast_cache dictionary"""
cls.ast_cache[key] = value
def parse(self): def parse(self):
"""Parse the function or method.""" """Parse the function or method."""
logger.debug("fn = %r", self.fn) logger.debug("fn = %r", self.fn)
@ -362,14 +352,14 @@ class Parser:
if isinstance(self.fn, (types.FunctionType, types.MethodType)): if isinstance(self.fn, (types.FunctionType, types.MethodType)):
original_src = inspect.getsource(self.fn) original_src = inspect.getsource(self.fn)
hexstr = hashlib.sha256(original_src.encode()).hexdigest() hexstr = hashlib.sha256(original_src.encode()).hexdigest()
tree = Parser.get_cache(hexstr) tree = Parser.ast_cache.get(hexstr)
if not tree: if not tree:
src = dedent(original_src) src = dedent(original_src)
self.col_offset = \ self.col_offset = \
len(original_src.split('\n')[0]) - len(src.split('\n')[0]) len(original_src.split('\n')[0]) - len(src.split('\n')[0])
logger.debug("get source = %s", src) logger.debug("get source = %s", src)
tree = asttokens.ASTTokens(src, parse=True).tree tree = asttokens.ASTTokens(src, parse=True).tree
Parser.insert_cache(hexstr, tree) Parser.ast_cache[hexstr] = tree
else: else:
logger.error("Fn type is invalid") logger.error("Fn type is invalid")
return tree return tree

View File

@ -136,7 +136,7 @@ class Optimizer : public std::enable_shared_from_this<Optimizer> {
return func_graph; return func_graph;
} }
// Optimizer step counter; // Optimizer step counter;
int counter = -1; int counter = 1;
bool changes = true; bool changes = true;
while (changes) { while (changes) {