我必须在我的一个类中对一个算法的实现进行计时,我正在使用时间。时间()执行此操作。在实现它之后,我必须在包含大小数据集的大量数据文件上运行该算法,以便正式分析其复杂性。在
不幸的是,在小数据集上,我得到了0秒的运行时间,即使我在查看大数据集的运行时得到了0.000000000000000001的精度,我不能相信它真的比小数据集的运行时间少。在
我的问题是:使用这个函数是否有问题(如果有,我可以使用另一个精度更高的函数)?还是我做错了什么?在
这是我的代码,如果你需要的话:
import sys, time
import random
from utility import parseSystemArguments, printResults
...
def main(ville):
start = time.time()
solution = dynamique(ville) # Algorithm implementation
end = time.time()
return (end - start, solution)
if __name__ == "__main__":
sys.argv.insert(1, "-a")
sys.argv.insert(2, "3")
(algoNumber, ville, printList) = parseSystemArguments()
(algoTime, solution) = main(ville)
printResults(algoTime, solution, printList)
printResults函数:
^{pr2}$
我的问题的解决方案是使用timeit模块而不是time模块。在
不要将系统时间的分辨率与浮点数的分辨率混淆。计算机上的时间分辨率只有在系统时钟更新时才会频繁。系统时钟的更新频率因机器而异,因此为了确保您看到时间的差异,您需要确保它执行一毫秒或更长时间。试着把它放入这样一个循环中:
最后,你需要除以循环迭代的次数来知道你的代码一次运行了多长时间。您可能需要增加k以更好地度量执行时间,或者,如果您的计算机在循环中运行了很长时间,则可能需要减小k。在
相关问题 更多 >
编程相关推荐