Faster R-CNN中提供了一个很好用的python下计时工具,用于分析模型运行速度的评估。
import time
class Timer(object):
"""A simple timer."""
def __init__(self):
self.total_time = 0.
self.calls = 0
self.start_time = 0.
self.diff = 0.
self.average_time = 0.
def tic(self):
# using time.time instead of time.clock because time time.clock
# does not normalize for multithreading
self.start_time = time.time()
def toc(self, average=True):
self.diff = time.time() - self.start_time
self.total_time += self.diff
self.calls += 1
self.average_time = self.total_time / self.calls
if average:
return self.average_time
else:
return self.diff
使用时
import Timer
timer = Timer()
timer.tic() # 单次开始计时
...
timer.toc() # 结束本次计时,返回值可以为多次的平均时间, 也可以为此次时间差toc(average=False)
注意:
计算机系统存在两个时间:CPU时间time.clock(),挂钟时间time.time()
- CPU时间>挂钟时间: 计算密集型任务,通过优化程序并发可以获得更好的效果,包含CPU内核调度时间(sys)和CPU计算时间(user)
- 挂钟时间≈CPU时间: IO密集型任务,不能通过并发改进性能,
具体使用参考: Python程序计时