##// END OF EJS Templates
rust-status: don't trigger dirstate v1 rewrite when only v2 data is changed...
rust-status: don't trigger dirstate v1 rewrite when only v2 data is changed The assumption that we need to rewrite (or append to) the dirstate if the ignore pattern hash has changed or if any cached directory mtimes have changed is only valid when using dirstate-v2. In dirstate-v1, neither of these things are written to disk.

File last commit:

r46393:5b6c0af0 default
r50232:6cd24955 stable
Show More
memorytop.py
44 lines | 1.4 KiB | text/x-python | PythonLexer
# memorytop requires Python 3.4
#
# Usage: set PYTHONTRACEMALLOC=n in the environment of the hg invocation,
# where n>= is the number of frames to show in the backtrace. Put calls to
# memorytop in strategic places to show the current memory use by allocation
# site.
import gc
import tracemalloc
def memorytop(limit=10):
gc.collect()
snapshot = tracemalloc.take_snapshot()
snapshot = snapshot.filter_traces(
(
tracemalloc.Filter(False, "<frozen importlib._bootstrap>"),
tracemalloc.Filter(False, "<frozen importlib._bootstrap_external>"),
tracemalloc.Filter(False, "<unknown>"),
)
)
stats = snapshot.statistics('traceback')
total = sum(stat.size for stat in stats)
print("\nTotal allocated size: %.1f KiB\n" % (total / 1024))
print("Lines with the biggest net allocations")
for index, stat in enumerate(stats[:limit], 1):
print(
"#%d: %d objects using %.1f KiB"
% (index, stat.count, stat.size / 1024)
)
for line in stat.traceback.format(most_recent_first=True):
print(' ', line)
other = stats[limit:]
if other:
size = sum(stat.size for stat in other)
count = sum(stat.count for stat in other)
print(
"%s other: %d objects using %.1f KiB"
% (len(other), count, size / 1024)
)
print()