mercurial/statprof.py
changeset 30255 f42cd5434cc2
parent 30254 ad4c0236168d
child 30256 2ed0b3f9f79e
equal deleted inserted replaced
30254:ad4c0236168d 30255:f42cd5434cc2
   309             state.thread.join()
   309             state.thread.join()
   310 
   310 
   311         state.accumulate_time(clock())
   311         state.accumulate_time(clock())
   312         state.last_start_time = None
   312         state.last_start_time = None
   313         statprofpath = os.environ.get('STATPROF_DEST')
   313         statprofpath = os.environ.get('STATPROF_DEST')
   314         save_data(statprofpath)
   314         if statprofpath:
   315 
   315             save_data(statprofpath)
   316 def save_data(path=None):
   316 
   317     try:
   317 def save_data(path):
   318         path = path or (os.environ['HOME'] + '/statprof.data')
   318     with open(path, 'w+') as file:
   319         file = open(path, "w+")
       
   320 
       
   321         file.write(str(state.accumulated_time) + '\n')
   319         file.write(str(state.accumulated_time) + '\n')
   322         for sample in state.samples:
   320         for sample in state.samples:
   323             time = str(sample.time)
   321             time = str(sample.time)
   324             stack = sample.stack
   322             stack = sample.stack
   325             sites = ['\1'.join([s.path, str(s.lineno), s.function])
   323             sites = ['\1'.join([s.path, str(s.lineno), s.function])
   326                      for s in stack]
   324                      for s in stack]
   327             file.write(time + '\0' + '\0'.join(sites) + '\n')
   325             file.write(time + '\0' + '\0'.join(sites) + '\n')
   328 
   326 
   329         file.close()
   327 def load_data(path):
   330     except (IOError, OSError):
       
   331         # The home directory probably didn't exist, or wasn't writable. Oh well.
       
   332         pass
       
   333 
       
   334 def load_data(path=None):
       
   335     path = path or (os.environ['HOME'] + '/statprof.data')
       
   336     lines = open(path, 'r').read().splitlines()
   328     lines = open(path, 'r').read().splitlines()
   337 
   329 
   338     state.accumulated_time = float(lines[0])
   330     state.accumulated_time = float(lines[0])
   339     state.samples = []
   331     state.samples = []
   340     for line in lines[1:]:
   332     for line in lines[1:]: