Skip to content

Commit

Permalink
Merge pull request #2991 from niboshi/precise-timer
Browse files Browse the repository at this point in the history
Select the best-resolution timer function
  • Loading branch information
okuta committed Jul 13, 2017
2 parents d6d3924 + 4db7c53 commit 83d619f
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions chainer/training/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@
from chainer.training import trigger as trigger_module


# Select the best-resolution timer function
try:
_get_time = time.perf_counter
except AttributeError:
if os.name == 'nt':
_get_time = time.clock
else:
_get_time = time.time


class _ExtensionEntry(object):

def __init__(self, extension, priority, trigger, invoke_before_training):
Expand Down Expand Up @@ -161,7 +171,7 @@ def elapsed_time(self):
return self._final_elapsed_time
if self._start_at is None:
raise RuntimeError('training has not been started yet')
return time.time() - self._start_at + self._snapshot_elapsed_time
return _get_time() - self._start_at + self._snapshot_elapsed_time

def extend(self, extension, name=None, trigger=None, priority=None,
invoke_before_training=None):
Expand Down Expand Up @@ -280,7 +290,7 @@ def run(self, show_loop_exception_msg=True):
extensions = [(name, self._extensions[name])
for name in extension_order]

self._start_at = time.time()
self._start_at = _get_time()

# invoke initializer of each extension
for _, entry in extensions:
Expand Down

0 comments on commit 83d619f

Please sign in to comment.