Почему время выполнения различается для разных алгоритмов для одного и того же решения - PullRequest
0 голосов
/ 22 ноября 2018

Просто из любопытства я запустил простой алгоритм «цифра за цифрой», чтобы найти квадратный корень одного и того же значения 20 раз (вздох я знаю ...)

Я получил одинаковые результаты для всех 20 прогонов, но время выполнения отличалось во всех исполнениях.Это ожидаемое наблюдение или я плохо запрограммировал таймер?

def tester(orange):   
    import timeit
    x = orange
    step = 1
    guess = 0
    epsilon = 0.0000000001
    start = timeit.default_timer()


    while guess ** 2 < x:
        guess += step
        if guess ** 2 > x:
            guess -= step
            if step > epsilon:
                step = step / 10
            else:
                break

    print("The square root of", x, "is", guess)

    stop = timeit.default_timer()

    print('Time: ', stop - start) 

number = int(input("Enter the number of times that you want to run this test: "))
answer = float(input("Enter a number to find the square root for: "))
while number > 0:
    tester(answer)
    number -= 1

1 Ответ

0 голосов
/ 22 ноября 2018

timeit.default_timer() измеряет время настенных часов, а не процессорное время.По этой причине другие процессы (включая фоновые процессы), запущенные на вашем компьютере, будут влиять на его время.Это можно увидеть в действии, если вы запустили свой код около 100 раз и открыли Chrome и связались с ним во время работы.Вы увидите небольшое увеличение времени, потому что chrome использует часть времени вашего процессора.

Чтобы получить более точную оценку вашего кода, используйте timeit.timeit.

Подробнее здесь

...