问题描述
我对评估算法的复杂性还很陌生,我的任务是测量一些功能的实际运行时间。
我一直在使用time.process_time()
。这是最好的方法吗?
- 准确吗?
- 运行时间是否会根据笔记本电脑的“繁忙”程度而有所不同? (例如,我还有其他应用程序正在打开)
- 还有其他更好的方法吗?
解决方法
选项1:分析代码以了解实际场景中的整体性能
这是确定在现实情况下运行功能的影响的好方法。
要了解有关代码性能的更多信息,可以使用Profiling。
运行以下命令评估功能性能:
import cProfile
cProfile.run('function()')
这为您提供了有价值的信息,例如;总调用数,累积时间,每个函数调用的时间以及每个函数的调用数。
选项2:调查特殊功能调用持续时间
这是了解函数运行时间的绝佳方法。
使用decorator:
from functools import wraps
from time import time
def timing(f):
@wraps(f)
def wrap(*args,**kw):
ts = time()
result = f(*args,**kw)
te = time()
print 'func:%r args:[%r,%r] took: %2.4f sec' % \
(f.__name__,args,kw,te-ts)
return result
return wrap
像这样使用它:
@timing
def function():
<code>