From 49c7c159456fd6ed23278ea0fb0461aac4b38941 Mon Sep 17 00:00:00 2001 From: scottmk Date: Mon, 5 Jan 2009 17:50:15 +0000 Subject: [PATCH] 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 --- src/libopensrf/osrf_json_tools.c | 45 ++++++++++++-------------------- 1 file changed, 17 insertions(+), 28 deletions(-) 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