Re: SVN: Zope/trunk/ Optimized the `OFS.Traversable.getPhysicalPath` method to avoid excessive amounts of method calls. Thx to Nikolay Kim from Enfold

Hanno Schlichting <[email protected]>
Newsgroups gmane.comp.web.zope.devel
Message-ID <CAJ5sox6MkeCpBj-o8_teviMawntwse5AdX=iGbsygHrcNKK6XA@mail.gmail.com>
On Thu, Jul 14, 2011 at 7:03 PM, Tres Seaver <[email protected]> wrote:
> A further micro-optimization is to pre-allocate a big list in a thread
> local.  Running the attached script produces::
>
>  $ python perftest.py
>  Via insert_0: 24.8401839733
>  Via append: 15.6596238613
>   speedup: 37.0%
>  Via tuple_add: 21.9555268288
>   speedup: 11.6%
>  Via prealloc: 10.5278339386
>   speedup: 57.6%

Thanks for that test!

I've run it with a much more reasonable test data set from one of our
live databases, for example:

letters = ['', 'nordic', 'en', 'nordic-council', 'organisation-and-structure',
    'committees', 'welfare-committee', 'meetings-and-meeting-documents',
    'meeting-of-the-welfare-committee-31-march-2011-stockholm']

which produces quite a different result:

Via insert_0: 4.35216093063
Via append: 4.80827713013
  speedup: -10.5%
Via tuple_add: 1.73557782173
  speedup: 60.1%
Via prealloc: 2.17882084846
  speedup: 49.9%

If I run it with a smaller segment, like:

letters = ['', 'nordic', 'en', 'nordic-council']

the effect is even clearer:

Via insert_0: 1.88715004921
Via append: 2.91810202599
  speedup: -54.6%
Via tuple_add: 0.809303998947
  speedup: 57.1%
Via prealloc: 1.56584882736
  speedup: 17.0%

Looks like the tuple add is faster until you hit very long sequences.
But even if you had such a nested ZODB structure, the majority of
lookups would still happen for the much shorter sequences.

So I think the tuple add is the winner for this case.

Hanno
_______________________________________________
Zope-Dev maillist  -  [email protected]
https://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 https://mail.zope.org/mailman/listinfo/zope-announce
 https://mail.zope.org/mailman/listinfo/zope )
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.