[
https://issues.apache.org/jira/browse/AXIS2-4731?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Afkham Azeez reassigned AXIS2-4731:
-----------------------------------
Assignee: Isuru Eranga Suriarachchi
> Inefficient inputstream reading in JSONDataSource
> -------------------------------------------------
>
> Key: AXIS2-4731
> URL: https://issues.apache.org/jira/browse/AXIS2-4731
> Project: Axis2
> Issue Type: Sub-task
> Components: modules
> Affects Versions: 1.5.1
> Reporter: Jean Marc
> Assignee: Isuru Eranga Suriarachchi
>
> I am experiencing 100% CPU on InputStream.read() on 30Kb json data from
> JSONDataSource.
> Using InputStream.read() 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 = in.read(tempBuf)) != -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: [email protected]
For additional commands, e-mail: [email protected]