From: scottmk Date: Mon, 5 Jan 2009 17:50:15 +0000 (+0000) Subject: This update boosts the performance of the jsonFormatString function. X-Git-Tag: osrf_rel_2_0_1~473 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=49c7c159456fd6ed23278ea0fb0461aac4b38941;p=OpenSRF.git This update boosts the performance of the jsonFormatString function. 1. Replaced the old _tabs function, which required the construction and destruction of a growing_buffer, with a new append_indentation function, which adds white space to an existing growing_buffer. This change eliminates a passel of mallocs and frees. 2. Removed the call to strlen() from the loop condition. 3. Replaced calls to buffer_fadd(), a fairly slow function, with calls to OSRF_BUFFER_ADD_CHAR() and append_indentation(). Also: replaced a call to buffer_add_char with the corresponding macro. 4. Eliminated a harmless but wasteful bug that sometimes added indentation to the end of a line. In my benchmarking, using a moderately complex JSON string 201 characters long, the new version was seven times as fast as the old. git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1571 9efc2488-bf62-4759-914b-345cdb29e865 --- diff --git a/src/libopensrf/osrf_json_tools.c b/src/libopensrf/osrf_json_tools.c index 0d33acf..91b3f26 100644 --- a/src/libopensrf/osrf_json_tools.c +++ b/src/libopensrf/osrf_json_tools.c @@ -21,11 +21,11 @@ static jsonObject* findMultiPath( const jsonObject* o, static jsonObject* findMultiPathRecurse( const jsonObject* o, const char* root ); static jsonObject* _jsonObjectEncodeClass( const jsonObject* obj, int ignoreClass ); -static char* _tabs(int count) { - growing_buffer* buf = buffer_init(24); - int i; - for(i=0;i