衡量运行时最佳实践 (Python)
Measuring runtime best practices (Python)
我对评估算法的复杂性还很陌生,我的任务是测量一些函数的实际运行时间。
我一直在使用time.process_time()
。这是解决问题的最佳方法吗?
- 准确吗?
- 运行时间会根据笔记本电脑的“繁忙”程度而有所不同吗? (例如,我打开了其他应用程序)
- 还有其他更好的方法吗?
选项 1:分析代码以了解 Real-Life 场景中的整体性能
这是确定 运行 您的函数在 real-life 场景中的影响的好方法。
要详细了解您的代码性能,您可以使用 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>
我对评估算法的复杂性还很陌生,我的任务是测量一些函数的实际运行时间。
我一直在使用time.process_time()
。这是解决问题的最佳方法吗?
- 准确吗?
- 运行时间会根据笔记本电脑的“繁忙”程度而有所不同吗? (例如,我打开了其他应用程序)
- 还有其他更好的方法吗?
选项 1:分析代码以了解 Real-Life 场景中的整体性能
这是确定 运行 您的函数在 real-life 场景中的影响的好方法。
要详细了解您的代码性能,您可以使用 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>