From ed28708bd80bfd298dcbbb9100d4c9f7c34f9bc5 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 4 Feb 2011 21:59:20 +0200 Subject: Add speed-test for measuring speed of tracing. --- speed-test | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 speed-test diff --git a/speed-test b/speed-test new file mode 100755 index 0000000..5184b70 --- /dev/null +++ b/speed-test @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +python -m timeit \ + -s 'import logging, tracing' \ + -s 'logging.basicConfig(filename="/dev/null")' \ + 'tracing.trace("foo: %s" % "bar")' -- cgit v1.2.1 From 4f855b71e11646da6d95bc2e081bd4083cf20a5a Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 4 Feb 2011 22:08:50 +0200 Subject: Add more measurements. --- speed-test | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/speed-test b/speed-test index 5184b70..05736a3 100755 --- a/speed-test +++ b/speed-test @@ -2,7 +2,26 @@ set -e +measure() { python -m timeit \ -s 'import logging, tracing' \ -s 'logging.basicConfig(filename="/dev/null")' \ - 'tracing.trace("foo: %s" % "bar")' + -s "$1" \ + -s ' +class Foo(object): + def foo(self): + tracing.trace("%s" % "bar") +f = Foo() +' \ + 'f.foo()' + +} + +echo Without patterns +measure "pass" + +echo With unmatching pattern +measure 'tracing.trace_add_pattern("yikes")' + +echo With matching pattern +measure 'tracing.trace_add_pattern("timeit-src")' -- cgit v1.2.1 From 7c08f99a8f0e8d12afb8adb6966f4bb3262c8697 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Fri, 4 Feb 2011 22:14:15 +0200 Subject: Optimize speed a bit. --- speed-test | 2 +- tracing.py | 22 ++++++++++++++-------- 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)) -- cgit v1.2.1