Форум сайта python.su
-1
Реализовал функцию сортировки и нужно вычислить время ее выполнения как это сделать помогите пожалуйста
Офлайн
221
Гуглите модуль timeit, у меня в блоге можно на русском почитать
Офлайн
-1
import timeit def cs1(a): h = 0 u = 0 c = 0 g = 0 j = 0 d = 0 for k in range(len(a)-1, 0, -1): f = False h += 1 for i in range(k, 0, -1): j += 1 if a[i] < a[i-1]: a[i], a[i-1] = a[i-1], a[i] c += 1 f = True d += 1 for i in range(k): u += 1 if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] g += 1 f = True if not f: return a,h,u,c,g,j,d print(timeit.timeit("cs1(a)", setup="from __main__ import cs1", number=1))
Users/Богдан/Desktop/azzz.py”, line 28, in <module>Офлайн
88
cs1(a)
Офлайн
857
Qwerty16Модуль timeit не вычисляет время, он даёт возможность сравнить время и найти более быстрый и более медленный вариант.
Реализовал функцию сортировки и нужно вычислить время ее выполнения
[guest@localhost ~]$ python3 -m timeit -s "def f(n): return n ** 3" "f(10)"
1000000 loops, best of 3: 0.568 usec per loop
[guest@localhost ~]$
[guest@localhost py]$ cat t.py
#!/usr/bin/env python3
def cs1(a):
h = 0
u = 0
c = 0
g = 0
j = 0
d = 0
for k in range(len(a)-1, 0, -1):
f = False
h += 1
for i in range(k, 0, -1):
j += 1
if a[i] < a[i-1]:
a[i], a[i-1] = a[i-1], a[i]
c += 1
f = True
d += 1
for i in range(k):
u += 1
if a[i] > a[i+1]:
a[i], a[i+1] = a[i+1], a[i]
g += 1
f = True
if not f:
return a,h,u,c,g,j,d
[guest@localhost py]$
[guest@localhost py]$ python3 -m timeit -s "from t import cs1 as f" "f([1, 2, 3])"
100000 loops, best of 3: 4.5 usec per loop
[guest@localhost py]$
#!/usr/bin/env python3 import timeit def f1(): pass def f2(): pass def main(): t1 = timeit.Timer('f1()', 'from __main__ import f1') t2 = timeit.Timer('f2()', 'from __main__ import f2') for t in t1, t2: print(t.repeat(3, 10000)) if __name__ == '__main__': main()
#!/usr/bin/env python3 def cs1(a): h = 0 u = 0 c = 0 g = 0 j = 0 d = 0 for k in range(len(a)-1, 0, -1): f = False h += 1 for i in range(k, 0, -1): j += 1 if a[i] < a[i-1]: a[i], a[i-1] = a[i-1], a[i] c += 1 f = True d += 1 for i in range(k): u += 1 if a[i] > a[i+1]: a[i], a[i+1] = a[i+1], a[i] g += 1 f = True if not f: return a,h,u,c,g,j,d
#!/usr/bin/env python3 import timeit import t def f1(): t.cs1([1, 2, 3] * 3) def f2(): t.cs1([1, 2, 3] * 5) def main(): t1 = timeit.Timer('f1()', 'from __main__ import f1') t2 = timeit.Timer('f2()', 'from __main__ import f2') for t in t1, t2: print(t.repeat(3, 10000)) if __name__ == '__main__': main()
[guest@localhost py]$ ./timecmp.py
[0.23246537600016381, 0.22988142500025788, 0.2342479890003233]
[0.49446545399996467, 0.48956154899997273, 0.4928233850000652]
[guest@localhost py]$
Отредактировано py.user.next (Апрель 10, 2016 00:04:14)
Офлайн