对于相同的解决方案,为什么逐位算法的运行时间会有所不同

时间:2018-11-22 05:01:45

标签: python python-3.x algorithm runtime

出于好奇,我运行了一个逐个数字的简单算法,以找到相同值的平方根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 :(得分:0)

timeit.default_timer()衡量挂钟时间而不是CPU时间。因此,计算机上运行的其他进程(包括后台进程)将影响其时间。如果您将代码运行了100次并打开chrome并在运行时对其进行了处理,那么您可以看到它的作用。您会看到时间略有增加,因为chrome正在使用您的CPU时间的一小部分。

要更准确地估算您的代码,请使用timeit.timeit

更多here