import cost in bzr
Alexander Belchenko
bialix at ukr.net
Tue May 16 14:09:31 BST 2006
I do some experiments with bzrlib in interpreter session and eventually
discover that execution of simple statement like:
from bzrlib.workingtree import WorkingTree
take a lot of time.
Recently in the list was link to speed comparison between bzr and hg,
and John Meinel mention that bzr by default imported too much.
I wrote 2 simple tester to evaluate import cost of different modules.
First tester provide timing evaluation for python statement in command
line, second one helps test of importing modules from packages.
First tester you can launch in the following manner:
python timing.py from bzrlib.workingtree import WorkingTree
Second tester expect to see filepath to imported module and convert it
to either "from $package import $module" or just "import $name" statements:
python timing2.py bzrlib\workingtree.py
See attachments.
I also run second tester for each python file in bzrlib directory and
got this results on somewhat old machine (Duron 750MHz, 384MB RAM):
import bzrlib 0.00999999046326
from bzrlib import add 0.991999864578
from bzrlib import annotate 0.641000032425
from bzrlib import atomicfile 0.171000003815
from bzrlib import branch 0.950999975204
from bzrlib import builtins 1.04199981689
from bzrlib import bzrdir 0.891999959946
from bzrlib import check 0.210000038147
from bzrlib import commands 0.111000061035
from bzrlib import commit 1.00100016594
from bzrlib import config 0.329999923706
from bzrlib import conflicts 0.421000003815
from bzrlib import decorators 0.00999999046326
from bzrlib import delta 0.190999984741
from bzrlib import diff 0.450999975204
from bzrlib import errors 0.00999999046326
from bzrlib import externalcommand 0.19000005722
from bzrlib import fetch 0.960999965668
from bzrlib import gpg 0.0499999523163
from bzrlib import graph 0.0199999809265
from bzrlib import hashcache 0.160000085831
from bzrlib import help 0.0700001716614
from bzrlib import identitymap 0.0100002288818
from bzrlib import info 0.460999965668
from bzrlib import inter 0.0
from bzrlib import intset 0.00999999046326
from bzrlib import inventory 0.200000047684
from bzrlib import iterablefile 0.321000099182
from bzrlib import knit 0.470999956131
from bzrlib import lock 0.210000038147
from bzrlib import lockable_files 0.169999837875
from bzrlib import lockdir 0.651000022888
from bzrlib import log 0.200999975204
from bzrlib import lsprof No module named _lsprof
from bzrlib import merge 0.990999937057
from bzrlib import merge3 0.379999876022
from bzrlib import missing 0.120000123978
from bzrlib import msgeditor 0.330000162125
from bzrlib import option cannot import name Option
from bzrlib import osutils 0.160000085831
from bzrlib import patch 0.380000114441
from bzrlib import plugin 0.361000061035
from bzrlib import progress 0.0899999141693
from bzrlib import reconcile 0.971999883652
from bzrlib import repository 0.961999893188
from bzrlib import revision 0.180000066757
from bzrlib import revisionspec 0.0499999523163
from bzrlib import rio 0.329999923706
from bzrlib import shellcomplete 0.00999999046326
from bzrlib import sign_my_commits 0.359999895096
from bzrlib import status 0.440999984741
from bzrlib import symbol_versioning 0.00999999046326
from bzrlib import testament 0.301000118256
from bzrlib import textfile 0.390999794006
from bzrlib import textinv 0.19000005722
from bzrlib import textmerge 0.0609998703003
from bzrlib import textui 0.00999999046326
from bzrlib import trace 0.0900001525879
from bzrlib import transactions 0.101000070572
from bzrlib import transform 0.210000038147
from bzrlib import tree 0.200999975204
from bzrlib import tsort 0.00999999046326
from bzrlib import tuned_gzip 0.0199999809265
from bzrlib import uncommit 0.00999999046326
from bzrlib import upgrade 0.891000032425
from bzrlib import versionedfile 0.341000080109
from bzrlib import weave 0.430999994278
from bzrlib import weave_commands 0.120000123978
from bzrlib import weavefile 0.0
from bzrlib import win32console 0.0409998893738
from bzrlib import workingtree 1.01099991798
from bzrlib import xml4 0.440999984741
from bzrlib import xml5 0.450999975204
from bzrlib import xml_serializer 0.341000080109
To run on win32 I use this command:
for %i in (bzrlib\*.py) do @python timing2.py %i >> timing.log
Probably some of this numbers is worth to improve.
--
Alexander
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: timing.log
Url: https://lists.ubuntu.com/archives/bazaar/attachments/20060516/3b1891c0/attachment.diff
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: timing.py
Url: https://lists.ubuntu.com/archives/bazaar/attachments/20060516/3b1891c0/attachment-0001.diff
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: timing2.py
Url: https://lists.ubuntu.com/archives/bazaar/attachments/20060516/3b1891c0/attachment-0002.diff
More information about the bazaar
mailing list