为什么相同解决方案的逐位算法的运行时间不同

只是出于好奇,我一个简单的数字一个数字的算法来求相同值的平方根 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


撒科打诨
浏览 190回答 1
1回答

沧海一幻觉

timeit.default_timer()测量挂钟时间而不是 CPU 时间。因此,在您的计算机上运行的其他进程(包括后台进程)会影响其时间。如果您运行代码大约 100 次并打开 chrome 并在运行时对其进行处理,您可以看到这一点。您会看到时间略有增加,因为 chrome 使用了您 CPU 时间的一小部分。要更准确地估计您的代码,请使用timeit.timeit.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python