There is still more that can be done, a 'phase-1' of 'bzr log DIR' has been improved dramatically in my branch.
"time bzr log -n0 --no-aliases tools"
went from
real 5m16.959s
down to
real 0m37.888s
This was done with just changing "get_deltas_for_revisions()" to not call filter() but to just always do the iter_changes code. I believe that actually means the resulting log will be wrong, because I'm not applying the specific file_ids anywhere, but it certainly was an interesting result.
I'm reverting that change (for now), and trying a different tack. Namely changing the CHKInventory.filter() operation to find the subset of files that were interesting, and then only extracting those entries from disk and putting them into an Inventory.
Note that doing it this way means it will scale by num_revisions * num_files_in_directory. While the other method should scale by O(changes-to-the-tree).
Ideally we'd combine the two and end up scaling as O(changes-to-those-files). The data on disk is all there to do so, we just don't have the apis built to support it yet.
There is still more that can be done, a 'phase-1' of 'bzr log DIR' has been improved dramatically in my branch.
"time bzr log -n0 --no-aliases tools"
went from
real 5m16.959s
down to
real 0m37.888s
This was done with just changing "get_deltas_ for_revisions( )" to not call filter() but to just always do the iter_changes code. I believe that actually means the resulting log will be wrong, because I'm not applying the specific file_ids anywhere, but it certainly was an interesting result.
I'm reverting that change (for now), and trying a different tack. Namely changing the CHKInventory. filter( ) operation to find the subset of files that were interesting, and then only extracting those entries from disk and putting them into an Inventory.
Note that doing it this way means it will scale by num_revisions * num_files_ in_directory. While the other method should scale by O(changes- to-the- tree). to-those- files). The data on disk is all there to do so, we just don't have the apis built to support it yet.
Ideally we'd combine the two and end up scaling as O(changes-