Skip to content
Snippets Groups Projects
Commit 8450c18f authored by mpm's avatar mpm
Browse files

annotate: memory efficiency

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

annotate: memory efficiency

Keep track of how many times a given ancestor is referenced and delete
the annotation information after it's no longer relevant. This tends
to reduce the number of cached revisions to just a couple.

manifest hash: 281e48b67ce310e355bed1615e0f16a643850f56
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQFCnJjyywK+sNU5EO8RAkZ1AKCugPjkRgwVB+71amZf8H5dLCbNvgCfePIB
4FHI1c9IOEzHUNkYPDGqt+0=
=OnFo
-----END PGP SIGNATURE-----
parent 2424676e
No related branches found
No related tags found
No related merge requests found
......@@ -41,6 +41,7 @@
new += child[s:t]
return new
# find all ancestors
needed = {}
visit = [node]
while visit:
......@@ -49,4 +50,7 @@
if p not in needed:
needed[p] = 1
visit.append(p)
else:
# count how many times we'll use this
needed[p] += 1
......@@ -52,4 +56,5 @@
# sort by revision which is a topological order
visit = needed.keys()
visit = [ (self.rev(n), n) for n in visit ]
visit.sort()
......@@ -61,6 +66,10 @@
for p in self.parents(n):
if p != nullid:
curr = pair(hist[p], curr)
# trim the history of unneeded revs
needed[p] -= 1
if not needed[p]:
del hist[p]
hist[n] = curr
return hist[n]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment