[OPEN-ILS-DEV] PATCH revised: osrf_hash.[ch] (performance tweak)

Mike Rylander mrylander at gmail.com
Fri Apr 11 11:38:01 EDT 2008


On Sat, Mar 22, 2008 at 11:53 PM, Scott McKellar <mck9 at swbell.net> wrote:
> --- Scott McKellar <mck9 at swbell.net> wrote:
>
>  > This patch boosts the performance of an osrfHashIterator a bit, by
>  > reusing the "current" buffer whenever possible instead of freeing and
>  > reallocating it on every iteration.
>
>  The patch attached here supercedes and replaces the patch I posted
>  a couple of days ago.

Arg ... I applied the earlier one.  I've now applied the change that
this patch provides.  Sorry folks ... moving on...

>
>  The change: in osrfHashIteratorReset, I had placed a nul in the
>  first character of itr->current.  However it is possible to call
>  this function when itr->current is still NULL.  Oops.
>
>  In the revised patch, I apply the nul only if itr->current is
>  not NULL.
>
>  ----------------------
>
>  I have experimented with a partial implementation of the ideas I
>  wrote about earlier today, using a doubly linked list instead of
>  an osrfStringArray to represent the sequence in which the entries
>  were added.
>
>  I modified my benchmark program to compare two different ways to
>  traverse an osrfHash: the old way (by indexing through the
>  osrfStringArray and doing hashed lookups) and the new way (using
>  a linked list).
>
>  The new kind of traversal is consistently about 40 times as fast.
>
>  Scott McKellar
>  http://home.swbell.net/mck9/ct/
>
>  Developer's Certificate of Origin 1.1 By making a contribution to
>  this project, I certify that:
>
>  (a) The contribution was created in whole or in part by me and I
>  have the right to submit it under the open source license indicated
>  in the file; or
>
>  (b) The contribution is based upon previous work that, to the best
>  of my knowledge, is covered under an appropriate open source license
>  and I have the right under that license to submit that work with
>  modifications, whether created in whole or in part by me, under the
>  same open source license (unless I am permitted to submit under a
>  different license), as indicated in the file; or
>
>  (c) The contribution was provided directly to me by some other person
>  who certified (a), (b) or (c) and I have not modified it; and
>
>  (d) In the case of each of (a), (b), or (c), I understand and agree
>  that this project and the contribution are public and that a record
>  of the contribution (including all personal information I submit
>  with it, including my sign-off) is maintained indefinitely and may
>  be redistributed consistent with this project or the open source
>  license indicated in the file.



-- 
Mike Rylander
 | VP, Research and Design
 | Equinox Software, Inc. / The Evergreen Experts
 | phone: 1-877-OPEN-ILS (673-6457)
 | email: miker at esilibrary.com
 | web: http://www.esilibrary.com


More information about the Open-ils-dev mailing list