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