我正在尝试使用此代码对功能运行的次数进行基准测试,例如10秒:
import time
window = 10
while True:
n = 0
while time.time() % window:
test() # which really runs only a fragment of a second
n = n + 1
print "n: %s" % n
但是test()
一直在反复运行而没有看到任何输出(方式超过10秒)。我知道time.time() % window
可能是天真的,但我无法想出正确的方法。
有人能把我推向正确的方向吗?我想避免使用“真正的基准测试工具”来学习如何做到这一点。
答案 0 :(得分:0)
time.time()
返回时间的浮点表示。
当你对它进行模数化时,你几乎从未让它完全返回0。
考虑使用:int(time.time()) % window
抬头但是:你想要在你的循环结束时睡一觉,以防止每次"基准"多次运行外循环。您可以通过对每次X迭代的时间进行基准测试而不是每X次迭代来避免这种情况。
每次X迭代时间的粗略示例:
window = 1000
start = time.time()
n = 0
while True:
test()
n = n + 1
if n % window == 0:
print "Average: %f/sec" % ( n / (time.time() - start) )
答案 1 :(得分:0)
这就是我想要的(加上避免了模数危险):
import time
def testFor(w, fn):
n = 0
start = time.time()
while (time.time() - start) < w:
fn()
n = n + 1
return n
window = 10
while True:
n = testFor(window, test)
print "n: %s" % n