0

我正在尝试使用以下代码对函数能够运行的次数进行基准测试,例如 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

有人能把我推向正确的方向吗?我想避免使用“真正的基准测试工具”来学习如何去做。

4

2 回答 2

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) )
于 2013-05-28T19:14:38.390 回答
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
于 2013-05-28T19:25:00.867 回答