Bzr windows performance

lists at hl.id.au lists at hl.id.au
Wed Oct 19 14:41:38 BST 2005


Hi,

I've been testing bzr on windows (under cygwin), and have been really
impressed with the functionality when using test projects. However,
when I've been trying it on our normal repository of code (just under
6000 files, and just under 600 MB of code / source controlled data), it
really slows down for pretty much all operations. For example; 
* 'bzr status' with no changes takes 10 seconds
* 'bzr add somefile' takes 4 seconds (recursive 'bzr add' takes 13
seconds)
* 'bzr commit -m "some change"' takes around 5 minutes (for the single
empty file added).

Is this sort of speed expected? For reference, when testing mercurial
(with the same source tree);
* 'hg status' takes 1.2 seconds
* 'hg add somefile' takes around 0.17 seconds (recursive 'hg add' takes
around 1.6 seconds)
* 'hg commit -m "some change"' takes 1.5 seconds (again, for the single
empty file added).

While speed of mercurial is fantastic, the fact that file / directory
moving isn't implemented yet is a bit of a worry. And while the
functionality of bzr is an absolute joy (the merging and branching is
lovely to say the least), the speed is a bit painful.

I've been looking around (wiki, mailing list, google), and haven't been
able to find what sort of speeds bzr is capable of. Are my results the
sort of speeds that are expected? If so, is it expected to be improved
to mercurial type speeds? That would make me one very happy camper
indeed...

Thanks,
Henry

Note: 
I'm using bzr 0.1.1 under cygwin (with the cygwin python), with
cElementTree installed (I'm running bzr from the development tree). For
reference I've attached the 'bzr --profile commit "some change"' log.
I'm using mecurial 0.7.1 binaries from
<http://www.serpentine.com/mercurial/>

-------------- next part --------------
         1583929 function calls (1434497 primitive calls) in 15.209 CPU seconds

   Ordered by: cumulative time
   List reduced from 328 to 20 due to restriction <20>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000   15.209   15.209 commands.py:258(run_argv)
        1    0.022    0.022   15.209   15.209 builtins.py:998(run)
        1    0.064    0.064   15.124   15.124 branch.py:1017(commit)
        1    0.001    0.001   14.941   14.941 commit.py:154(commit)
        1    0.374    0.374   11.718   11.718 commit.py:338(_store_snapshot)
     6354    0.033    0.000    9.257    0.001 weave.py:92(get_weave_or_empty)
     6356    0.789    0.000    9.227    0.001 weave.py:75(get_weave)
     6356    0.038    0.000    8.306    0.001 weave.py:64(_get)
     6365    8.112    0.001    8.173    0.001 local.py:68(get)
     6352    0.091    0.000    1.525    0.000 inventory.py:321(snapshot)
    25432    0.161    0.000    1.496    0.000 __init__.py:906(debug)
    25432    0.152    0.000    1.210    0.000 __init__.py:1026(_log)
        1    0.041    0.041    0.996    0.996 commit.py:361(_populate_new_inv)
        1    0.006    0.006    0.890    0.890 commit.py:245(_record_inventory)
        1    0.007    0.007    0.861    0.861 xml.py:48(write_inventory_to_string)
   6357/2    0.160    0.000    0.691    0.346 ElementTree.py:662(_write)
        2    0.000    0.000    0.691    0.346 ElementTree.py:652(write)
        1    0.000    0.000    0.691    0.691 ElementTree.py:1000(tostring)
138688/25412    0.450    0.000    0.590    0.000 inventory.py:749(iter_entries)
     5471    0.077    0.000    0.542    0.000 inventory.py:551(_read_tree_state)


More information about the bazaar mailing list