summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@xander>2011-02-04 22:14:15 +0200
committerLars Wirzenius <liw@xander>2011-02-04 22:14:15 +0200
commit7c08f99a8f0e8d12afb8adb6966f4bb3262c8697 (patch)
tree9d682df5eb9a5be7068b874810b2fe9a601579b8
parent4f855b71e11646da6d95bc2e081bd4083cf20a5a (diff)
downloadpython-tracing-7c08f99a8f0e8d12afb8adb6966f4bb3262c8697.tar.gz
Optimize speed a bit.
-rwxr-xr-xspeed-test2
-rw-r--r--tracing.py22
2 files changed, 15 insertions, 9 deletions
diff --git a/speed-test b/speed-test
index 05736a3..76e6b9a 100755
--- a/speed-test
+++ b/speed-test
@@ -10,7 +10,7 @@ python -m timeit \
-s '
class Foo(object):
def foo(self):
- tracing.trace("%s" % "bar")
+ tracing.trace("%s", "bar")
f = Foo()
' \
'f.foo()'
diff --git a/tracing.py b/tracing.py
index 191564f..efef8e2 100644
--- a/tracing.py
+++ b/tracing.py
@@ -49,6 +49,7 @@ import traceback
trace_patterns = []
+trace_cache = set()
def trace_add_pattern(pattern):
@@ -57,16 +58,21 @@ def trace_add_pattern(pattern):
def trace_clear_patterns():
del trace_patterns[:]
+ trace_cache.clear()
-def trace(msg):
+def trace(msg, *args):
if trace_patterns:
frames = traceback.extract_stack(limit=2)
filename, lineno, funcname, text = frames[0]
- filename = os.path.basename(filename)
- for pattern in trace_patterns:
- if pattern in filename:
- logging.debug('%s:%s:%s: %s' %
- (filename, lineno, funcname, msg))
- break
-
+ log_it = filename in trace_cache
+ if not log_it:
+ for pattern in trace_patterns:
+ if pattern in filename:
+ log_it = True
+ trace_cache.add(filename)
+ break
+ if log_it:
+ filename = os.path.basename(filename)
+ msg = msg % args
+ logging.debug('%s:%s:%s: %s' % (filename, lineno, funcname, msg))