【发布时间】:2013-07-11 18:54:07
【问题描述】:
我正在尝试使用 Python 的 time 模块比较两种不同算法的运行时间,以确定数字是否为素数,例如:
test = primesComparisonTXT()
start = time.clock()
print 'Fermat Method'
for prime in test:
print isFermatProbablePrime(prime, 5)
total = time.clock() - start
print total
primesComparisonTXT() 是一个函数,它返回 (1, 1000000) 中已确认的素数列表。
isFermatProbablePrime() 是一个函数,它接受 1. 一个可疑素数 2. 一个参数,该参数指示应该使用费马的素数测试对可疑素数进行多少次素性测试。该函数根据嫌疑人是否是可能的素数返回 True 或 False。 (http://en.wikipedia.org/wiki/Fermat_primality_test)
该算法正确输出该列表中的每个素数确实是可能的素数,但我得到的时间结果大不相同。 4.57107920129 打印为“总计”,但 Sublime Text 声明构建为“[在 15.1 秒内完成]”。 Sublime 的计时更准确。这种差异有什么特别的原因吗?也许应该使用更好的计时方法(timeit)?
【问题讨论】:
-
primesComparisonTXT()需要多长时间? -
0.0783992072275s 根据 time.clock(),0.3s 根据 Sublime
-
如果你想要实际的持续时间,你应该使用 time.time()。
-
或者,如果您要测试完整脚本的时间,只需使用
time命令,它实际上会显示时钟时间和处理器时间,后者分解为用户和系统/内核。
标签: python sublimetext2