Mercurial > hg
changeset 51588:1574718fa62f
profiler: flush after writing the profiler output
Otherwise, the profiler output might only partially appears until the next flush
of the buffer. Since profiling often happens for long operation, the next flush
can be a long time away.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 14 Apr 2024 02:36:55 +0200 |
parents | 8cd317c033b8 |
children | 90ef3e042e10 |
files | mercurial/profiling.py |
diffstat | 1 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/profiling.py Sun Apr 14 02:33:36 2024 +0200 +++ b/mercurial/profiling.py Sun Apr 14 02:36:55 2024 +0200 @@ -70,6 +70,7 @@ stats = lsprof.Stats(p.getstats()) stats.sort(pycompat.sysstr(field)) stats.pprint(limit=limit, file=fp, climit=climit) + fp.flush() @contextlib.contextmanager @@ -97,14 +98,15 @@ finally: thread.stop() thread.join() - print( - b'Collected %d stack frames (%d unique) in %2.2f seconds.' - % ( + m = b'Collected %d stack frames (%d unique) in %2.2f seconds.' + m %= ( + ( util.timer() - start_time, thread.num_frames(), thread.num_frames(unique=True), - ) + ), ) + print(m, flush=True) @contextlib.contextmanager @@ -170,6 +172,7 @@ kwargs['showtime'] = showtime statprof.display(fp, data=data, format=displayformat, **kwargs) + fp.flush() class profile: