##// END OF EJS Templates
merge: use separate lists for each action type...
merge: use separate lists for each action type This replaces the grand unified action list that had multiple action types as tuples in one big list. That list was iterated multiple times just to find actions of a specific type. This data model also made some code more convoluted than necessary. Instead we now store actions as a tuple of lists. Using multiple lists gives a bit of cut'n'pasted code but also enables other optimizations. This patch uses 'if True:' to preserve indentations and help reviewing. It also limits the number of conflicts with other pending patches. It can trivially be cleaned up later.

File last commit:

r10282:08a0f04b default
r21545:43eecb4e default
Show More
memory.py
36 lines | 1.1 KiB | text/x-python | PythonLexer
Martin Geisler
contrib: helper extension to track memory usage
r10017 # memory.py - track memory usage
#
# Copyright 2009 Matt Mackall <mpm@selenic.com> and others
#
# This software may be used and distributed according to the terms of the
Matt Mackall
Merge with stable
r10264 # GNU General Public License version 2 or any later version.
Martin Geisler
contrib: helper extension to track memory usage
r10017
'''helper extension to measure memory usage
Reads current and peak memory usage from ``/proc/self/status`` and
prints it to ``stderr`` on exit.
'''
import atexit
def memusage(ui):
"""Report memory usage of the current process."""
status = None
result = {'peak': 0, 'rss': 0}
try:
# This will only work on systems with a /proc file system
# (like Linux).
status = open('/proc/self/status', 'r')
for line in status:
parts = line.split()
key = parts[0][2:-1].lower()
if key in result:
result[key] = int(parts[1])
finally:
if status is not None:
status.close()
Matt Mackall
many, many trivial check-code fixups
r10282 ui.write_err(", ".join(["%s: %.1f MiB" % (key, value / 1024.0)
Martin Geisler
contrib: helper extension to track memory usage
r10017 for key, value in result.iteritems()]) + "\n")
def extsetup(ui):
atexit.register(memusage, ui)