lp:~jameinel/bzr/2.0.1-faster-get-deltas-bug374730

Created by John A Meinel and last modified
Get this branch:
bzr branch lp:~jameinel/bzr/2.0.1-faster-get-deltas-bug374730
Only John A Meinel can upload to this branch. If you are John A Meinel please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
John A Meinel
Project:
Bazaar
Status:
Development

Recent revisions

4683. By John A Meinel

We can check if old matches first, which gives us a couple more hits.
Down to 49s. Not the <36s I'd like to be at, though...

4682. By John A Meinel

Caching the specific_fileids => expanded form brings us to 0m51s.

4681. By John A Meinel

Refactor the tests a bit.

The time is down a little (1m13s), but it seems to be missing one ancestry
in bzr.dev's log of 'tools'.

4680. By John A Meinel

The changes_from() implementation fails the include_parents test.
The previous get_deltas_for_revisions() implementation would include
  mv foo bar
if you did
  bzr log bar/file
(It would show you changes to a parent dir, when logging a child.)
It is arguable either way, but I think we want to preserve this behavior.

Also note that this 'changes_from' implementation is taking 1m35s up from the 36s
I was seeing with the simpler implementation.
My guess is that the paths2ids overhead is significant.

4679. By John A Meinel

implement CHKInventoryRepository.get_delta_for_revisions

This first implementation just maps file_ids => paths, and then calls
tree.changes_from().
This isn't ideal for a few reasons, but it should be better than what we've
had.

4678. By John A Meinel

Split out get_deltas_for_revision into a separate test module.

4677. By John A Meinel

Handle the case when the specific_fileids don't exist in this revision.

4676. By John A Meinel

I didn't mean to change get_deltas_for_revisions yet.

I didn't implement support for specific_fileids, which means the results
were probably wrong. However, it does show that going through iter_changes()
first, and then filtering second is going to be vastly faster.
(Time was 38s vs 5m+ for 'bzr log tools')
What is surprising is that 'time bzr log -v' which should just be the simple
iter_changes route, was >2min. So something isn't quite right with those
numbers.

4675. By John A Meinel

Implement CHKInventory.filter() on the new subset.

With this implementation, we can probably filter() without reading all nodes,
which is the goal of the exercise.

4674. By John A Meinel

Catch a corner case that we were missing.
The CHKInventory tests were passing, but failed for test_inv because
we were passing None to _getitems(). That only failed for InternalNodes,
but we were using a structure that didn't have internal nodes.
So now the test is parameterized on a small CHKInventory page size
to force those things out into the open.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:bzr
This branch contains Public information 
Everyone can see this information.

Subscribers