-
Notifications
You must be signed in to change notification settings - Fork 6
/
timing.py
33 lines (29 loc) · 1.16 KB
/
timing.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import time
#подключение библиотеки для графики
from matplotlib import pyplot as plt
def timed(f, *args, n_iter=100):
acc = float("inf")
#засекаем время начала программы
t0 = time.perf_counter()
#для подсчета быстрых процессов приходится запустить один и тот же процесс n_iter раз
for i in range(n_iter):
f(*args)
#время исполнения
acc = min(acc, time.perf_counter() - t0)
return acc
#функция отрисовки времени исполнения разных программ
def compare(fs, args):
xs = list(range(len(args)))
for f in fs:
plt.plot(xs, [timed(f, chunk) for chunk in args],
label=f.__name__)
plt.legend()
plt.grid(True)
#примеры использования
A=[]
for k in range(10):
A.append(list(range(k*100,k,-1)))
#Сравнение сортировок
compare([insert_sort, sort_merge], A)
#Сравнение вариантов вычисления чисел Фибоначчи
compare([fib, fib2], list(range(25)))