time.time()比time.clock()更快?

时间:2013-10-09 11:12:32

标签: python benchmarking

我正在用Python编写一个迭代大量数据的测试 使用外部库对每个函数执行一个函数。每个 循环,它有时也需要以某种方式解码和破坏数据。现在 基准测试不是主要的优先事项,但我希望它能够衡量一些基本的 统计数据,如实际测试的差异和由此引起的开销 破坏(如果失控)。

包括an SO answer在内的大多数来源似乎建议使用timeit模块, 但他们中的大多数似乎都在讨论简单代码片段的基准测试。也 正如答案所指出的那样,time.clock()似乎值得推荐。

但是我没有找到两者的实际速度之间的比较 调用。所以我一直在尝试time.time和time.clock来寻找 哪一个更快,更令人惊讶的是time.time()似乎是赢家。

此代码(借用“The Optimization anecdote”):

import time

def timing0(f, n):
    print f.__name__,
    r = range(n)
    t1 = time.clock()
    for i in r:
        f(); f(); f(); f(); f()
        f(); f(); f(); f(); f()
    t2 = time.clock()
    print t2-t1

timing0(time.clock, 1000000)
timing0(time.time, 1000000)

几乎不断输出这样的数字:

me@here:~$ ./timing_time
clock 2.47
time 0.47
me@here:~$

唯一的区别是time()更精确:当我使用time()时 测量,小数点后得到大约11位数。

但是时间(),即使它不那么精确,它总是快5倍左右。

那么为什么clock()是首选?这在很大程度上取决于架构 和操作系统?或者我错过了什么,我的结果不正确?

上面的代码在Debian Wheezy amd64和Python 2.7上运行。我试过了 使用在OpenVZ中运行的Python 2.6挤压amd64,结果是 大致相同。

0 个答案:

没有答案