From 3e71378aff660c1979e9a892c4a21ec46144526d Mon Sep 17 00:00:00 2001 From: msolo Date: Thu, 26 May 2011 07:02:52 +0000 Subject: [PATCH] added --tune-gc to increase performance ~8.5% when processing multiple files this may cause peak memory usage to be higher --- spitfire/compiler/util.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/spitfire/compiler/util.py b/spitfire/compiler/util.py index c2c202c..a8acd57 100644 --- a/spitfire/compiler/util.py +++ b/spitfire/compiler/util.py @@ -1,4 +1,5 @@ import copy +import gc import logging import new import os.path @@ -144,7 +145,8 @@ class Compiler(object): 'optimizer_flags', 'output_directory', 'xspt_mode', - 'include_path' + 'include_path', + 'tune_gc' ] @classmethod @@ -177,6 +179,8 @@ def __init__(self, **kargs): self.locale = None self.include_path = '.' self.enable_filters = True + self.tune_gc = False + # the function registry is for optimized access to 'first-class' functions # things that get accessed all the time that should be speedy self.function_registry_file = None @@ -264,9 +268,17 @@ def _reset(self): self._source_code = None def compile_template(self, src_text, classname): - self._reset() - self._parse_tree = parse_template(src_text, self.xspt_mode) - return self._compile_ast(self._parse_tree, classname) + if self.tune_gc: + gc.disable() + try: + self._reset() + self._parse_tree = parse_template(src_text, self.xspt_mode) + return self._compile_ast(self._parse_tree, classname) + finally: + if self.tune_gc: + self._reset() + gc.enable() + gc.collect() def compile_file(self, filename): self.src_filename = filename @@ -360,4 +372,5 @@ def add_common_options(op): help='file to use as the function registry') op.add_option('-X', dest='optimizer_flags', action='append', default=[], help=analyzer.AnalyzerOptions.get_help()) + op.add_option('--tune-gc', action='store_true')