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

Scott McKellar mck9 at swbell.net
Sat Mar 22 23:53:43 EDT 2008


--- 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.

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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: osrf_hash_c_2.patch
Type: text/x-patch
Size: 1912 bytes
Desc: 636108827-osrf_hash_c_2.patch
Url : http://list.georgialibraries.org/pipermail/open-ils-dev/attachments/20080322/0f5946f1/osrf_hash_c_2.bin


More information about the Open-ils-dev mailing list