axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jean Marc (JIRA)" <>
Subject [jira] Created: (AXIS2-4731) Inefficient inputstream reading in JSONDataSource
Date Fri, 04 Jun 2010 19:12:54 GMT
Inefficient inputstream reading in JSONDataSource

                 Key: AXIS2-4731
             Project: Axis2
          Issue Type: Sub-task
          Components: modules
    Affects Versions: 1.5.1
            Reporter: Jean Marc

I am experiencing 100% CPU on on 30Kb json data from JSONDataSource.
Using is highly inefficient since we don't know the size of the JSON data;

a reasonably-sized char buffer should be used to cut down on CPU and to lower the method calls
on StringBuilder.append(). 

Note also that regardless of the solution, there must be a charset conversion between an InputStream
and a Reader (or a String object for that matter), and that the cast between int and char
in the old code will corrupt an InputStream containing multibyte characters. Since JSON data
is usually sent in UTF-8, we could hardcode the conversion in the InputStreamReader to overcome
problems on Windows: 

            BufferedReader in = new BufferedReader(new InputStreamReader(jsonInputStream,"UTF-8"));
            StringBuilder sb = new StringBuilder(512); 
            char[] tempBuf = new char[512];
            int readLen = -1;
            while( (readLen = != -1 )
                sb.append(tempBuf,0, readLen);
             tempBuf = null;

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message