diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-11-12 19:47:38 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-11-12 19:47:38 +0200 |
commit | 1e8528022c0d57004d5e45f69761bfce2cda5573 (patch) | |
tree | f734f46424bc122530a852abb6fbb2f27c089761 /Lib/timeit.py | |
parent | 7006c33c21ba0db56f80b9236e6c6b373e479ed2 (diff) | |
parent | d9f3a4fea570a035b5767518abca56a6d529a4a4 (diff) | |
download | cpython-1e8528022c0d57004d5e45f69761bfce2cda5573.tar.gz |
Issue #25607: Restore old distutils logging threshold after running tests that
parse command line arguments.
Diffstat (limited to 'Lib/timeit.py')
-rw-r--r--[-rwxr-xr-x] | Lib/timeit.py | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/Lib/timeit.py b/Lib/timeit.py index 2de88f7271..98cb3eb89a 100755..100644 --- a/Lib/timeit.py +++ b/Lib/timeit.py @@ -317,20 +317,26 @@ def main(args=None, *, _wrap_timer=None): print("%d loops," % number, end=' ') usec = best * 1e6 / number if time_unit is not None: - print("best of %d: %.*g %s per loop" % (repeat, precision, - usec/units[time_unit], time_unit)) + scale = units[time_unit] else: - if usec < 1000: - print("best of %d: %.*g usec per loop" % (repeat, precision, usec)) - else: - msec = usec / 1000 - if msec < 1000: - print("best of %d: %.*g msec per loop" % (repeat, - precision, msec)) - else: - sec = msec / 1000 - print("best of %d: %.*g sec per loop" % (repeat, - precision, sec)) + scales = [(scale, unit) for unit, scale in units.items()] + scales.sort(reverse=True) + for scale, time_unit in scales: + if usec >= scale: + break + print("best of %d: %.*g %s per loop" % (repeat, precision, + usec/scale, time_unit)) + best = min(r) + usec = best * 1e6 / number + worst = max(r) + if worst >= best * 4: + usec = worst * 1e6 / number + import warnings + warnings.warn_explicit( + "The test results are likely unreliable. The worst\n" + "time (%.*g %s) was more than four times slower than the best time." % + (precision, usec/scale, time_unit), + UserWarning, '', 0) return None if __name__ == "__main__": |