hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tony Poppleton (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HTTPCORE-212) Minor performance improvements
Date Sat, 16 Jan 2010 00:06:54 GMT

     [ https://issues.apache.org/jira/browse/HTTPCORE-212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Tony Poppleton updated HTTPCORE-212:

    Attachment: HttpHostBenchmark.java

Attached *.patch3 which indents with spaces rather than tabs (as per conventions) and removed
the use of the "final" keyword.

Interestingly, I did a quick benchmark to test CharArrayBuffer vs String, and to my surprise
the CharArrayBuffer was faster when String concatenation is involved.  However HttpHost.java.patch3
still contains an order of magnitude speedup when no port is set.

The benchmark is attached if interested (it is not intended for committing into the codebase,
although perhaps in a more appropriate place?).  The benchmark was run on Sun Java 1.6.0_18
which advertises a speedup to String concatenation in the release notes!  Anyway, I retract
my comments about CharArrayBuffer being slower, although I am optimistic that some future
JVM will eventually optimize String concatenation to be faster.

I have not yet benchmarked the changes to BasicLineParser.

> Minor performance improvements
> ------------------------------
>                 Key: HTTPCORE-212
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-212
>             Project: HttpComponents HttpCore
>          Issue Type: Improvement
>          Components: HttpCore
>            Reporter: Tony Poppleton
>            Priority: Minor
>             Fix For: 4.1-beta1
>         Attachments: BasicLineParser.java.patch, BasicLineParser.java.patch2, BasicLineParser.java.patch3,
HttpHost.java.patch, HttpHost.java.patch2, HttpHost.java.patch3, HttpHostBenchmark.java
> JProfiler highlighted a few minor bottlenecks in HttpCore, and two patches are attached.
> Neither of these two patches has been benchmarked in a proper fashion, I just observed
that they dropped of the JProfiler radar (which isn't a thorough way of doing this and may
be wrong!).  Could someone with a benchmarking suite already setup please test these patches
for performance to confirm they are indeed faster and also if possible ascertain how much
> The first patch is to remove the unnecessary creation of a CharArrayBuffer in HttpHost.toHostString.
 In cases without a port, there is no object creation at all now, and in cases with a port
then Java string concatenation is used (and optimized away in recent JVMs).
> The second patch is more involved and affects BasicLineParser.  Given that all of my
responses are being processed with this class, I decided I should look at optimizing it. 
The main culprit is the string creation in CharArrayBuffer.substringTrimmed which is only
required to be able to call the Java Integer.parseInt method.  I normally prefer using Java
classes where possible, however this patch implements a custom parseInt method which also
removes the need for the indexOf operation (so the CharArrayBuffer/String is now only scanned
once rather than twice).

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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message