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 /Command/Status.hs | |
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 'Command/Status.hs')
0 files changed, 0 insertions, 0 deletions