summaryrefslogtreecommitdiff
path: root/Annex
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-03-11 15:19:07 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-03-11 16:24:07 -0400
commitb086e32c63a4932fc5916bedae7abe0690da4eb0 (patch)
treee3c59401831ef04602151b18e3cfcc10c8887881 /Annex
parenta13949bf3794a33248611aca9ef821a6088b1b3a (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 'Annex')
0 files changed, 0 insertions, 0 deletions