用于检查执行时间的实用程序?

时间:2012-03-12 18:07:17

标签: python shell execution-time

是否有bash命令或Python库来计算执行文件/命令的时间?我希望能够决定哪种语言最适合某项任务,或者有一种方法可以确定Python代码A的运行速度比Python代码B快。如果有办法这样做,但这个问题不在话题,请用搜索字词或其他资源发表评论。

5 个答案:

答案 0 :(得分:3)

是的,它被称为time命令。与time command arg1 arg2 arg3中一样。

输出3个字段,如下所示:

real    0m0.631s
user    0m0.154s
sys     0m0.458s

第一个是实际的挂钟时间。第二个是程序在用户空间中花费的时间。第三个是程序在内核空间中花费的时间。

答案 1 :(得分:2)

您可以使用timeit:

from timeit import timeit
print timeit("function_2(arg)", "from __main__ import function_2, arg", number=5)

注意事项:

  • from __main__ import function, argtimeit模块提供对脚本中函数和变量的访问权。
  • 函数和相关参数必须作为字符串传递。
  • number =运行次数[默认为1000000]。
  • timeit返回的时间是number次运行的总和...而不是平均值(抓住我一次......)。

答案 2 :(得分:1)

time

例如:

time ls -a
列出文件后

给出

real    0m0.240s
user    0m0.002s
sys     0m0.004s

在资源方面有很多选项可供跟踪。有关详细信息,请参见手册页。

答案 3 :(得分:0)

python -m timeit "setup" "code"

如果你想为Python代码计时。适用于快速和肮脏的性能基准测试。

答案 4 :(得分:0)

我使用这个片段,我在网上找到了一些我不记得的片段:

import atexit
import time
def secondsToStr(t):
    return "%d:%02d:%02d.%03d" % \
        reduce(lambda ll,b : divmod(ll[0],b) + ll[1:],
            [(t*1000,),1000,60,60])

line = "="*40
def log(s, elapsed=None):
    print line
    print secondsToStr(time.clock()), '-', s
    if elapsed:
        print "Elapsed time:", elapsed
    print line
    print

def endlog():
    end = time.clock()
    elapsed = end-start
    log("End Program", secondsToStr(elapsed))

def now():
    return secondsToStr(time.clock())

start = time.clock()
atexit.register(endlog)
log("Start Program")