Suggestion for improvement: have a bench decorator: @bench
I suggest that you implement a bench decorator (similar to bench in spec)
SPEC> bench sleep (0.2)
Execution time: 200.27 msec.
My first draft:
import time
def bench(original_func):
def wrapper(*args, **kwargs):
start = time.time()
result = original_func(*args, **kwargs)
end = time.time()
if ( end - start ) < 1.0:
bench_time = ( end - start )*1000.0
unit_bench_time = 'msec'
elif ( end - start ) < 60.0:
bench_time = ( end - start )
unit_bench_time = 'sec'
elif (end - start ) >= 60.0:
bench_time = ( end - start)/60.0
unit_bench_time = 'min'
end
print('Execution time: %10.2f %s.' % (bench_time, unit_bench_time))
return result
return wrapper
DEMO [12]: @bench
...: def wwww():
...: wa()
DEMO [13]: wwww()
Current Positions (user, dial)
m1[mm] m2 m3 m4 m5 m6 m7 dummy1 dummy2
-------- --------- ------- -------- ------- ------- ------- -------- --------
7.00000 -12.00000 3.00000 12.00000 2.00000 0.00000 0.00000 0.00000 0.00000
2.00000 12.00000 3.00000 3.00000 2.00000 0.00000 0.00000 0.00000 0.00000
Execution time: 8.20 msec.
DEMO [21]: import timeit
DEMO [22]: timeit.timeit(wa, number=1)
Current Positions (user, dial)
m1[mm] m2 m3 m4 m5 m6 m7 dummy1 dummy2
-------- --------- ------- -------- ------- ------- ------- -------- --------
7.00000 -12.00000 3.00000 12.00000 2.00000 0.00000 0.00000 0.00000 0.00000
2.00000 12.00000 3.00000 3.00000 2.00000 0.00000 0.00000 0.00000 0.00000
Out [22]: 0.0027947528287768364
DEMO [19]: import timedisplay
DEMO [20]: import timeit
DEMO [21]: timedisplay.duration_format( timeit.timeit(wa, number=1))
Current Positions (user, dial)
m1[mm] m2 m3 m4 m5 m6 m7 dummy1 dummy2
-------- --------- ------- -------- ------- ------- ------- -------- --------
7.00000 -12.00000 3.00000 12.00000 2.00000 0.00000 0.00000 0.00000 0.00000
2.00000 12.00000 3.00000 3.00000 2.00000 0.00000 0.00000 0.00000 0.00000
Out [21]: '7ms 412𝜇s'