[OPEN-ILS-DEV] PATCH: object.c (performance tweak)

Scott McKellar mck9 at swbell.net
Tue Jun 5 00:17:49 EDT 2007


This patch tidies up object.c a bit, and tweaks performance.

1. I declared the __tabs function as static.  It is not referenced in
any other source file.

2. I also renamed it to build_tabs.  Identifiers beginning with two
underscores are reserved for the implementation.

3. I rewrote it so that it allocates its own buffer instead of using
a growing_buffer.  This change eliminates two rounds of malloc() and 
free().  Also it calculates how much space it needs instead of 
appending successive chunks in a loop.

I benchmarked the performance by calling jsonFormatString() to
format a short fragment of JSON text.  With the rewritten version of
build_tabs(), the formatting is about 15% faster.

4. Elsewhere I used the new buffer_release function to replace the
combination of buffer_data() and buffer_free().  This change
eliminates a round of strdup() and free().

Scott McKellar
http://home.swbell

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: object_c_1.patch
Type: text/x-patch
Size: 2798 bytes
Desc: 1899742013-object_c_1.patch
Url : http://list.georgialibraries.org/pipermail/open-ils-dev/attachments/20070604/e6de3369/object_c_1.bin


More information about the Open-ils-dev mailing list