I also checked, and I couldn't see any major change in the time for 'bzr pack', so it doesn't seem to make anything slower, while decreasing peak memory consumption by quite a bit.
(Note that the memory consumed during 'bzr pack' is unaffected, and is still considerably higher (536MiB). I'm guessing it is dominated by the 'create_delta_index' which peaks at something like 2x bytes while building and re-shaping the index.)
This patch finishes up the work I started with "commit" and memory consumption.
After this patch, when doing 'bzr commit' in a --2a format repository, we no longer hold more than one copy of the file text in memory.
So --2a now only holds:
1 file text
2 copies of the compressed bytes
For committing a single large file with lots of small lines, this is:
bzr.dev (last week) 457324 KB 6.164s
bzr.dev (_add_text) 215996 KB 3.980s
this code 123904 KB 3.863s
So this code at least isn't slower, and it cuts the memory for a large file commit by a good amount.
https:/ /bugs.edge. launchpad. net/bzr/ +bug/109114
I also checked, and I couldn't see any major change in the time for 'bzr pack', so it doesn't seem to make anything slower, while decreasing peak memory consumption by quite a bit.
(Note that the memory consumed during 'bzr pack' is unaffected, and is still considerably higher (536MiB). I'm guessing it is dominated by the 'create_ delta_index' which peaks at something like 2x bytes while building and re-shaping the index.)