b086e32c63
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. |
||
---|---|---|
.. | ||
bugs | ||
design | ||
download | ||
encryption | ||
forum | ||
install | ||
news | ||
special_remotes | ||
sync | ||
templates | ||
tips | ||
todo | ||
upgrades | ||
use_case | ||
users | ||
walkthrough | ||
backends.mdwn | ||
bare_repositories.mdwn | ||
bugs.mdwn | ||
comments.mdwn | ||
contact.mdwn | ||
copies.mdwn | ||
design.mdwn | ||
distributed_version_control.mdwn | ||
download.mdwn | ||
encryption.mdwn | ||
feeds.mdwn | ||
forum.mdwn | ||
future_proofing.mdwn | ||
git-annex-shell.mdwn | ||
git-annex.mdwn | ||
git-union-merge.mdwn | ||
GPL | ||
how_it_works.mdwn | ||
index.mdwn | ||
install.mdwn | ||
internals.mdwn | ||
location_tracking.mdwn | ||
logo.png | ||
logo_small.png | ||
meta.mdwn | ||
news.mdwn | ||
NixOS.mdwn | ||
not.mdwn | ||
repomap.png | ||
scalability.mdwn | ||
sitemap.mdwn | ||
special_remotes.mdwn | ||
summary.mdwn | ||
sync.mdwn | ||
tips.mdwn | ||
todo.mdwn | ||
transferring_data.mdwn | ||
trust.mdwn | ||
upgrades.mdwn | ||
users.mdwn | ||
walkthrough.mdwn |