[
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
BasicLineParser.java.patch3
HttpHost.java.patch3
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 faster.
> 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: [email protected]
For additional commands, e-mail: [email protected]