Spaces:
Paused
Paused
| # -------------------------------------------------------- | |
| # Fast R-CNN | |
| # Copyright (c) 2015 Microsoft | |
| # Licensed under The MIT License [see LICENSE for details] | |
| # Written by Ross Girshick | |
| # -------------------------------------------------------- | |
| 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. | |
| self.warm_up = 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 | |
| if self.warm_up < 10: # don't use warm_up | |
| self.warm_up += 1 | |
| return self.diff | |
| else: | |
| 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 | |
| class Timers(): | |
| ''' A collect of Timer() | |
| Usage: | |
| see __main__ | |
| ''' | |
| def __init__(self): | |
| self.timers = {} | |
| def __len__(self): | |
| return len(self.timers) | |
| def __getitem__(self, key): | |
| if key not in self.timers: | |
| self.timers[key] = Timer() | |
| return self.timers[key] | |
| def print(self): | |
| print ('@@@@ Timer Report ===>') | |
| for key, timer in self.timers.items(): | |
| print ('@@@@ [%-15s]: aver %10.3fs on %10d hits'\ | |
| %(key, timer.average_time, timer.calls)) | |
| if __name__ == '__main__': | |
| timers = Timers() | |
| for _ in range(1,10): | |
| timers['tag1'].tic() | |
| time.sleep(0.1) | |
| timers['tag1'].toc() | |
| timers['tag2'].tic() | |
| for _ in range(1,10): | |
| time.sleep(0.1) | |
| timers['tag2'].toc() | |
| timers.print() | |