12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import logging
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import time
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TimeProfile(object):
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  """Class for simple profiling of action, with logging of cost."""
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  def __init__(self, description):
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self._starttime = None
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self._description = description
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self.Start()
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  def Start(self):
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    self._starttime = time.time()
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  def Stop(self):
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    """Stop profiling and dump a log."""
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if self._starttime:
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      stoptime = time.time()
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      logging.info('%fsec to perform %s',
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                   stoptime - self._starttime, self._description)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      self._starttime = None
27