Время цикла
Ребята, напомните, как проверить, за какое время выполняется цикл.
Источник: Stack Overflow на русском
Ребята, напомните, как проверить, за какое время выполняется цикл.
Код пишу на глаз, не проверял, но должно работать, в теории.
import time
timer_begin = time.time()
# Тут ваш цикл
timer_end = time.time()
timer_secs = timer_end - timer_begin
times_msecs = timer_secs * 1000
print 'Затраченное время: %f ms' % timer_msecs
Но, у модуля time, вроде, есть готовый способ делать замер. Надо гуглить, но лень)
Upd. Можно это еще классом оформить, примерно так:
import time
class Timer(object):
def __init__(self, verbose = False):
self.verbose = verbose
self.start = ''
self.end = ''
self.secs = ''
self.msecs = ''
def __enter__(self):
self.start = time.time()
return self
def __exit__(self, *args):
self.end = time.time()
self.secs = self.end - self.start
self.msecs = self.secs * 1000
if self.verbose:
print 'Затраченное время: %f ms' % self.msecs
А потом, в нужном месте делать так:
import Timer
with Timer() as t:
# Тут то, что нужно замерить.
print u"Затраченное время: %.7s сек.\n" % t.secs
Или так:
import Timer
with Timer(True) as t:
# Тут то, что нужно замерить.
Но что-то меня понесло, пойду спать.
Возможно, вам также подойдет модуль timeit:
$ python -m timeit '"-".join(str(n) for n in range(100))'
10000 loops, best of 3: 40.3 usec per loop
Или вот так:
def test():
"""Stupid test function"""
L = []
for i in range(100):
L.append(i)
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
Его особенность в том, что код запускается некоторое количество итераций, из которых выбирается лучшее время.
А зачем для этого какие-то велосипеды? unittest это показывает по умолчанию.
from unittest import TestCase
def fib(n):
if n < 2:
return n
prev, cur = 0, 1
for _ in xrange(n - 1):
prev, cur = cur, prev + cur
return cur
class TestFibonacci(TestCase):
def test300(self):
fib300 = 222232244629420445529739893461909967206666939096499764990979600
self.assertEqual(fib(300), fib300)
D:\Python>c:\Python27\python.exe -m unittest discover
.
----------------------------------------------------------------------
Ran 1 test in 0.035s
OK