Как посчитать время, за которое отсортировался список?

import timeit

import numpy as np

def bubble_sort(nums):
    # Устанавливаем swapped в True, чтобы цикл запустился хотя бы один раз
    swapped = True
    while swapped:
        swapped = False
        for i in range(len(nums) - 1):
            if nums[i] > nums[i + 1]:
                # Меняем элементы
                nums[i], nums[i + 1] = nums[i + 1], nums[i]
                # Устанавливаем swapped в True для следующей итерации
                swapped = True


a = list(np.random.permutation(100))
bubble_sort(a)
print(a)

Не понимаю как, надо воспользоваться модулем timeit, как?


Ответы (1 шт):

Автор решения: passant

Я всегда за то, что-бы искать наипростейшие и самые понятные решения задачи. Поэтому в вашем случае можно, конечно, искать и более красивые решения, в можно и вот так, в лоб:

a = list(np.random.permutation(100))
start_time = timeit.default_timer()
bubble_sort(a)
print(timeit.default_timer() - start_time)

Результат:

0.0008262999999999465

Если очень хочется, то можно немного поизвращаться:

t1 = timeit.Timer("bubble_sort(list(np.random.permutation(100)))", "from __main__ import bubble_sort; import numpy as np")
print("Время выполнения:",t1.timeit(number=1), "миллисекунд")

Результат:

Время выполнения: 0.0009164999996755796 миллисекунд

А можно вообще обойтись библиотекой time (а timeit применять там, где ей место - при работе в консоли)

import time
start_time = time.clock()
bubble_sort(a)
stop_time=time.clock()
print(stop_time - start_time)   

Результат:

0.0008161999999174441
→ Ссылка