diff options
author | Joey Hess <joey@kitenet.net> | 2012-03-11 15:19:07 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-03-11 16:24:07 -0400 |
commit | b086e32c63a4932fc5916bedae7abe0690da4eb0 (patch) | |
tree | e3c59401831ef04602151b18e3cfcc10c8887881 /debian | |
parent | a13949bf3794a33248611aca9ef821a6088b1b3a (diff) |
unused: Reduce memory usage significantly.
Much of the memory bloat turned out to be due to getKeysReferenced
containing a mapM, which is strict and buffered the whole list
rather than streaming it.
The other half of the bloat was due to building a temporary Set
in order to call S.difference. While that is more cpu efficient,
I switched to successive S.delete, since with it, I can run a whole
git annex unused in less than 8 mb of memory.
The whole Set of keys with content available is still stored in memory,
so running unused in a repo with a whole lot of file content will still
use more memory. In a repo containing 6000 files, it needed 40 mb.
Note that the status command still uses the bloatful getKeysReferenced.
Diffstat (limited to 'debian')
-rw-r--r-- | debian/changelog | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 10dc1c50c..2cb5a1aea 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,9 @@ git-annex (3.20120310) UNRELEASED; urgency=low * fsck: Fix up any broken links and misplaced content caused by the directory hash calculation bug fixed in the last release. * sync: Sync to lower cost remotes first. + * unused: Reduce memory usage significantly. Still not constant + space, but now only needs to store the set of file contents that + are present in the annex in memory. -- Joey Hess <joeyh@debian.org> Sat, 10 Mar 2012 14:03:22 -0400 |