From eda4e2bbd9d0cf869e87dc5e998ce1fb69c42548 Mon Sep 17 00:00:00 2001 From: Peter Hinch Date: Tue, 1 Nov 2016 10:52:52 +0000 Subject: [PATCH] Timed function's handling of new ticks_diff changed --- timed_function/timed_func.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/timed_function/timed_func.py b/timed_function/timed_func.py index 616bcdb..1328440 100644 --- a/timed_function/timed_func.py +++ b/timed_function/timed_func.py @@ -1,23 +1,15 @@ # Time a function call by means of a decorator +# On or shortly beore 1st November 2016 the semantics of utime.ticks_diff changed. If using +# older firmware please use the second example below + import utime -def tdiff(): - new_semantics = utime.ticks_diff(2, 1) == 1 - def func(old, new): - nonlocal new_semantics - if new_semantics: - return utime.ticks_diff(new, old) - return utime.ticks_diff(old, new) - return func - -ticksdiff = tdiff() - def timed_function(f, *args, **kwargs): myname = str(f).split(' ')[1] def new_func(*args, **kwargs): t = utime.ticks_us() result = f(*args, **kwargs) - delta = ticksdiff(t, utime.ticks_us()) + delta = utime.ticks_diff(utime.ticks_us(), t) # Argument order new, old print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000)) return result return new_func @@ -26,3 +18,15 @@ def timed_function(f, *args, **kwargs): def test(): utime.sleep_us(10000) +# Version for use with older firmware +def timed_function(f, *args, **kwargs): + myname = str(f).split(' ')[1] + def new_func(*args, **kwargs): + t = utime.ticks_us() + result = f(*args, **kwargs) + delta = utime.ticks_diff(t, utime.ticks_us()) # Argument order old, new + print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000)) + return result + return new_func + +