hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roland Weber <ROLWE...@de.ibm.com>
Subject RE: GetMethod Performance
Date Mon, 16 Feb 2004 07:28:26 GMT
Hello Ben,

I remember reading about problems with particular JVM versions,
and with "stale connection checks" in this mailing list. But I didn't
track these issues, so someone else will have to help out. Or you
check the mailing list archive and the bugzilla database for known
issues. There's a good chance you'll find something about your


"Ben Wong" <bwong@adaptiveinternational.com>
16.02.2004 07:30
Please respond to "Commons HttpClient Project"
        To:     "'Commons HttpClient Project'" 
        Subject:        RE: GetMethod Performance

Thanks Michael and Roland for the quick responses.

Roland, in fact, that was a typo and it was not caused by the
initialization of HttpClient AFAIK.

I had very close result when I ran the whole thing on my laptop, which
runs WinXP. Both could finish in less than a second.

However, when I put exactly the same code to Sun Solaris 8 on a Sun
Blade 100, I got a totally different story. Test finishes quick when I
used Socket, but it takes significantly longer when httpClient was used.

Did I miss out something that I should do when I execute Java class from
console on Sun box? Or do they have a different JVM configuration?

-----Original Message-----
From: Roland Weber [mailto:ROLWEBER@de.ibm.com] 
Sent: Monday, 16 February 2004 5:25 PM
To: Commons HttpClient Project
Subject: Re: GetMethod Performance

Hi Ben,

that is indeed a big difference. Two questions:

1. The HttpClient example uses IP address,
   the Socket example connects to
   Is that a typo, or do you indeed access a different host?
   If that different host is a caching proxy, that would be an

2. Did you check how much of the delay is due to the
   initialization of HttpClient? Please set a checkpoint
   after "new HttpClient()" and before "new GetMethod".
   Since the client only has to be created once for your
   application, that would be a fairer comparison.

I trust you ran your examples immediately after one
another while there was not much load on the network.


"Ben Wong" <bwong@adaptiveinternational.com>
16.02.2004 06:40
Please respond to "Commons HttpClient Project"
        To:     <commons-httpclient-dev@jakarta.apache.org>
        Subject:        GetMethod Performance


I have noticed significant performance difference between using
HttpClient and Socket.

I tried to use GetMethod to download a 2MB file from a Webserver sitting
in the LAN. When I do it with HttpClient, it takes around 13-15 seconds
while it will only take less than half a second with Socket.

I was running the code below on a Sun Blade 100 with Solaris 8
installed. J2SDK1.4.2_03 and HttpClient 2.0 final were used.

Any help would be appreciated.


HttpClient code:
HttpClient client = new HttpClient();
GetMethod get = new
int statusCode = client.executeMethod(get);
System.out.println("Status Code: " + statusCode);
int size = 0;
InputStream in = get.getResponseBodyAsStream();
byte [] data = new byte[10000];
int read = 0;
while ((read = in.read(data)) > 0) {
                 size += read;


Socket Code:
Socket soc = new Socket("", 80);
InputStream in = soc.getInputStream();
OutputStream out = soc.getOutputStream();

String command = "GET
HTTP/1.0\nUser-Agent: Jakarta Commons-HttpClient/2.0final\nHost:\n\n";
byte [] send = command.getBytes();

byte b[] = new byte[4096];
int size = 0;
int count = 0;
while( (size = in.read(b)) >= 0) {
                 count += size;


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

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

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message