commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "allen huang" <coolallenhu...@gmail.com>
Subject [httpclient_common]_why httpclient's speed is the same with JDK httpurlconnection
Date Wed, 07 Feb 2007 01:06:36 GMT
Hi,
I have a problem when trying to comparing the speed between JDK
HttpURLConnection and HttpClient.

Now I have two methods, one is performed with jdk(1.5) httpurlConnection,
the other is performed with httpClient( 3.0.1). Both of them try to download
the same webpage(http://jakarta.apache.org).After<http://jakarta.apache.org%29.After>testing,
the average time which performed JDK httpurlconnection  is  200ms,
so as the one which performed httpclient.That means their speeds are almost
the same.

So, since HttpClient use persistence connection default but JDK do not, why
httpClient's speed could not be more fast than JDK?

Another problem is, is it normal to httpclient to use 200ms to download a
page like http://jakarta.apache.org? I mean, when using persistence
connection, maybe this could not be accepted.

Any help will be great appreciated

----------------------------------------Source to httpclient
method-------------------------------------
    public void testGetMethod(){

        MultiThreadedHttpConnectionManager manager=new
MultiThreadedHttpConnectionManager();
        manager.getParams().setConnectionTimeout(3000);
        manager.getParams ().setDefaultMaxConnectionsPerHost(1);
//        manager.getParams().setMaxTotalConnections(30);
        HttpClient httpClient = new HttpClient(manager);
        // Set the default host/protocol for the methods to connect to.
        // This value will only be used if the methods are not given an
absolute URI
//        httpClient.getHostConfiguration().setProxy("192.168.0.10",80);
//        httpClient.getHostConfiguration().setHost("jakarta.apache.org",
80, "http");
        GetMethod method = new GetMethod(" http://jakarta.apache.org");
        for (int i=0;i<10;i++){
        try {

//            System.out.println(" - about to get something from " +
method.getURI());
            // execute the method
            long start=System.currentTimeMillis();
            httpClient.executeMethod(method);

//            System.out.println(" - get executed");
            // get the response body as an array of bytes
            byte[] bytes = method.getResponseBody();
            System.out.println("cost time is "+(System.currentTimeMillis
()-start));

//            System.out.println(new String(bytes));
//            System.out.println(" - " + bytes.length + " bytes read");

        } catch (Exception e) {
            System.out.println(" - error: " + e);
        } finally {
            // always release the connection after we're done
            method.releaseConnection();
//            System.out.println(" - connection released");
        }
        }
    }
------------------------------------------source code to JDK
httpurlconnection------------------------------------------------
    public void testJDKHttpURlconnection() {

        for (int i = 0; i < 10; i++) {
            try {
                long start = System.currentTimeMillis();
                URL requestedURL = new URL("http://jakarta.apache.org");
                HttpURLConnection conn = (HttpURLConnection) requestedURL
                        .openConnection();

                conn.setRequestProperty("User-Agent",
                        "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0
)");

                conn.setUseCaches(false);

                conn.connect();

                BufferedInputStream remoteBIS = new BufferedInputStream(conn
                        .getInputStream());
                ByteArrayOutputStream baos = new
ByteArrayOutputStream(10240);
                byte[] buf = new byte[1024];
                int bytesRead = 0;
                while (bytesRead >= 0) {
                    baos.write(buf, 0, bytesRead);
                    bytesRead = remoteBIS.read(buf);
                }
                byte[] content = baos.toByteArray();
                System.out.println("cost time is "
                        + (System.currentTimeMillis() - start));

            } catch (Exception e) {
            }
        }
    }

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