Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-httpclient 
Wiki" for change notification.

The following page has been changed by RolandWeber:
http://wiki.apache.org/jakarta-httpclient/HttpClient3vsHttpClient4vsHttpCore

------------------------------------------------------------------------------
- = Client side HTTP performance benchmarks =
+ #DEPRECATED
  
- '''BIG FAT DISCLAIMER''': These benchmarks are NOT based on any scientific 
methodology so the numbers are likely to be non-precise  
+ This page has been 
[http://wiki.apache.org/HttpComponents/HttpClient3vsHttpClient4vsHttpCore moved]
+ to the new [http://wiki.apache.org/HttpComponents/ HttpComponents Wiki].
  
- == HttpClient 3.x code ==
- 
- {{{
- public static void main(String[] args) throws Exception {
-     if (args.length < 2) {
-         System.out.println("Usage: <target URI> <no of requests>");
-         System.exit(-1);
-     }
-     String targetURI = args[0];
-     int n = Integer.parseInt(args[1]);
-     
-     HttpClient httpclient = new HttpClient();
-     httpclient.getParams().setVersion(
-             HttpVersion.HTTP_1_1);
-     httpclient.getParams().setBooleanParameter(
-             HttpMethodParams.USE_EXPECT_CONTINUE, false);
-     httpclient.getHttpConnectionManager().getParams()
-             .setStaleCheckingEnabled(false);
-     
-     GetMethod httpget = new GetMethod(targetURI);
- 
-     byte[] buffer = new byte[4096];
-     
-     long startTime;
-     long finishTime;
-     int successCount = 0;
-     int failureCount = 0;
-     String serverName = "unknown";
-     long total = 0;
-     long contentLen = 0;
-     long totalContentLen = 0;
-     
-     startTime = System.currentTimeMillis();
-     for (int i = 0; i < n; i++) {
-         try {
-             httpclient.executeMethod(httpget);
-             InputStream instream = httpget.getResponseBodyAsStream();
-             contentLen = 0;
-             if (instream != null) {
-                 int l = 0;
-                 while ((l = instream.read(buffer)) != -1) {
-                     total += l;
-                     contentLen += l;
-                 }
-             }
-             successCount++;
-             totalContentLen += contentLen;
-         } catch (IOException ex) {
-             failureCount++;
-         } finally {
-             httpget.releaseConnection();
-         }
-     }
-     finishTime = System.currentTimeMillis();
-     
-     Header header = httpget.getResponseHeader("Server");
-     if (header != null) {
-         serverName = header.getValue();
-     }
-     
-     float totalTimeSec = (float) (finishTime - startTime) / 1000;
-     float reqsPerSec = (float) successCount / totalTimeSec; 
-     float timePerReqMs = (float) (finishTime - startTime) / (float) 
successCount; 
-     
-     System.out.print("Server Software:\t");
-     System.out.println(serverName);
-     System.out.println();
-     System.out.print("Document URI:\t\t");
-     System.out.println(targetURI);
-     System.out.print("Document Length:\t");
-     System.out.print(contentLen);
-     System.out.println(" bytes");
-     System.out.println();
-     System.out.print("Time taken for tests:\t");
-     System.out.print(totalTimeSec);
-     System.out.println(" seconds");
-     System.out.print("Complete requests:\t");
-     System.out.println(successCount);
-     System.out.print("Failed requests:\t");
-     System.out.println(failureCount);
-     System.out.print("Content transferred:\t");
-     System.out.print(total);
-     System.out.println(" bytes");
-     System.out.print("Requests per second:\t");
-     System.out.print(reqsPerSec);
-     System.out.println(" [#/sec] (mean)");
-     System.out.print("Time per request:\t");
-     System.out.print(timePerReqMs);
-     System.out.println(" [ms] (mean)");
- }
- 
- }}}
- 
- == HttpClient 4.x code ==
- 
- {{{
-     if (args.length < 2) {
-         System.out.println("Usage: <target URI> <no of requests>");
-         System.exit(-1);
-     }
-     String targetURI = args[0];
-     int n = Integer.parseInt(args[1]);
-     
-     BasicHttpParams params = new BasicHttpParams();
-     params.setParameter(HttpProtocolParams.PROTOCOL_VERSION, 
-             HttpVersion.HTTP_1_1);
-     params.setBooleanParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, 
-             false);
-     params.setBooleanParameter(HttpConnectionParams.STALE_CONNECTION_CHECK, 
-             false);
-     params.setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 
-             2 * 1024);
-     
-     DefaultHttpClient httpclient = new DefaultHttpClient(params);
-     
-     HttpGet httpget = new HttpGet(targetURI);
- 
-     byte[] buffer = new byte[4096];
-     
-     long startTime;
-     long finishTime;
-     int successCount = 0;
-     int failureCount = 0;
-     String serverName = "unknown";
-     long total = 0;
-     long contentLen = 0;
-     long totalContentLen = 0;
-     
-     startTime = System.currentTimeMillis();
-     for (int i = 0; i < n; i++) {
-         HttpResponse response = httpclient.execute(httpget);
-         HttpEntity entity = response.getEntity();
-         if (entity != null) {
-             InputStream instream = entity.getContent();
-             try {
-                 contentLen = 0;
-                 if (instream != null) {
-                     int l = 0;
-                     while ((l = instream.read(buffer)) != -1) {
-                         total += l;
-                         contentLen += l;
-                     }
-                 }
-                 successCount++;
-                 totalContentLen += contentLen;
-             } catch (IOException ex) {
-                 httpget.abort();
-                 failureCount++;
-             } finally {
-                 instream.close();
-             }
-         }
-         Header header = response.getFirstHeader("Server");
-         if (header != null) {
-             serverName = header.getValue();
-         }
-     }
-     finishTime = System.currentTimeMillis();
-     
-     float totalTimeSec = (float) (finishTime - startTime) / 1000;
-     float reqsPerSec = (float) successCount / totalTimeSec; 
-     float timePerReqMs = (float) (finishTime - startTime) / (float) 
successCount; 
-     
-     System.out.print("Server Software:\t");
-     System.out.println(serverName);
-     System.out.println();
-     System.out.print("Document URI:\t\t");
-     System.out.println(targetURI);
-     System.out.print("Document Length:\t");
-     System.out.print(contentLen);
-     System.out.println(" bytes");
-     System.out.println();
-     System.out.print("Time taken for tests:\t");
-     System.out.print(totalTimeSec);
-     System.out.println(" seconds");
-     System.out.print("Complete requests:\t");
-     System.out.println(successCount);
-     System.out.print("Failed requests:\t");
-     System.out.println(failureCount);
-     System.out.print("Content transferred:\t");
-     System.out.print(total);
-     System.out.println(" bytes");
-     System.out.print("Requests per second:\t");
-     System.out.print(reqsPerSec);
-     System.out.println(" [#/sec] (mean)");
-     System.out.print("Time per request:\t");
-     System.out.print(timePerReqMs);
-     System.out.println(" [ms] (mean)");
- }
- 
- }}}
- 
- == HttpCore 4.x code ==
- 
- {{{
- public static void main(String[] args) throws Exception {
-     if (args.length < 2) {
-         System.out.println("Usage: <target URI> <no of requests>");
-         System.exit(-1);
-     }
-     URI targetURI = new URI(args[0]);
-     int n = Integer.parseInt(args[1]);
-     
-     HttpHost targetHost = new HttpHost(
-             targetURI.getHost(), 
-             targetURI.getPort()); 
-     
-     BasicHttpParams params = new BasicHttpParams();
-     params.setParameter(HttpProtocolParams.PROTOCOL_VERSION, 
-             HttpVersion.HTTP_1_1);
-     params.setBooleanParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, 
-             false);
-     params.setBooleanParameter(HttpConnectionParams.STALE_CONNECTION_CHECK, 
-             false);
-     params.setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 
-             2 * 1024);
-     
-     BasicHttpRequest httpget = new BasicHttpRequest("GET", 
targetURI.getPath());
- 
-     byte[] buffer = new byte[4096];
-     
-     long startTime;
-     long finishTime;
-     int successCount = 0;
-     int failureCount = 0;
-     String serverName = "unknown";
-     long total = 0;
-     long contentLen = 0;
-     long totalContentLen = 0;
-     
-     HttpRequestExecutor httpexecutor = new HttpRequestExecutor();
-     BasicHttpProcessor httpproc = new BasicHttpProcessor(); 
-     // Required protocol interceptors
-     httpproc.addInterceptor(new RequestContent());
-     httpproc.addInterceptor(new RequestTargetHost());
-     // Recommended protocol interceptors
-     httpproc.addInterceptor(new RequestConnControl());
-     httpproc.addInterceptor(new RequestUserAgent());
-     httpproc.addInterceptor(new RequestExpectContinue());
-     
-     HttpContext context = new HttpExecutionContext(null);
- 
-     DefaultHttpClientConnection conn = new DefaultHttpClientConnection();
- 
-     DefaultConnectionReuseStrategy connStrategy = new 
DefaultConnectionReuseStrategy(); 
-     
-     startTime = System.currentTimeMillis();
-     for (int i = 0; i < n; i++) {
-         if (!conn.isOpen()) {
-             Socket socket = new Socket(
-                     targetHost.getHostName(), 
-                     targetHost.getPort() > 0 ? targetHost.getPort() : 80);
-             conn.bind(socket, params);
-         }
- 
-         context.setAttribute(HttpExecutionContext.HTTP_CONNECTION, conn);
-         context.setAttribute(HttpExecutionContext.HTTP_TARGET_HOST, 
targetHost);
-         context.setAttribute(HttpExecutionContext.HTTP_REQUEST, httpget);
-         httpexecutor.preProcess(httpget, httpproc, context);
- 
-         HttpResponse response = httpexecutor.execute(httpget, conn, context);
-         
-         context.setAttribute(HttpExecutionContext.HTTP_RESPONSE, response);
-         httpexecutor.postProcess(response, httpproc, context);
-         
-         HttpEntity entity = response.getEntity();
-         if (entity != null) {
-             InputStream instream = entity.getContent();
-             try {
-                 contentLen = 0;
-                 if (instream != null) {
-                     int l = 0;
-                     while ((l = instream.read(buffer)) != -1) {
-                         total += l;
-                         contentLen += l;
-                     }
-                 }
-                 successCount++;
-                 totalContentLen += contentLen;
-             } catch (IOException ex) {
-                 conn.shutdown();
-                 failureCount++;
-             } finally {
-                 instream.close();
-             }
-         }
-         if (!connStrategy.keepAlive(response, context)) {
-             conn.close();
-         }
-         Header header = response.getFirstHeader("Server");
-         if (header != null) {
-             serverName = header.getValue();
-         }
-     }
-     finishTime = System.currentTimeMillis();
-     
-     float totalTimeSec = (float) (finishTime - startTime) / 1000;
-     float reqsPerSec = (float) successCount / totalTimeSec; 
-     float timePerReqMs = (float) (finishTime - startTime) / (float) 
successCount; 
-     
-     System.out.print("Server Software:\t");
-     System.out.println(serverName);
-     System.out.println();
-     System.out.print("Document URI:\t\t");
-     System.out.println(targetURI);
-     System.out.print("Document Length:\t");
-     System.out.print(contentLen);
-     System.out.println(" bytes");
-     System.out.println();
-     System.out.print("Time taken for tests:\t");
-     System.out.print(totalTimeSec);
-     System.out.println(" seconds");
-     System.out.print("Complete requests:\t");
-     System.out.println(successCount);
-     System.out.print("Failed requests:\t");
-     System.out.println(failureCount);
-     System.out.print("Content transferred:\t");
-     System.out.print(total);
-     System.out.println(" bytes");
-     System.out.print("Requests per second:\t");
-     System.out.print(reqsPerSec);
-     System.out.println(" [#/sec] (mean)");
-     System.out.print("Time per request:\t");
-     System.out.print(timePerReqMs);
-     System.out.println(" [ms] (mean)");
- }
- 
- }}}
- 
- == Results ==
- 
- === Platform: Ubuntu Linux 7.04 (i686, 2.6.20-16-generic); java version 
"1.5.0_11" ===
- 
- ==== 200,000 HTTP GETs, keep alive, content length: 22 bytes  ====
- 
-  * !HttpClient 3.x
- 
- {{{
- java -cp 
bin:/opt/libjava/commons-httpclient.jar:/opt/libjava/commons-logging.jar:/opt/libjava/commons-codec.jar
 \
-    test.perf.HttpClient3PerfTest http://localhost/msg.txt 200000
- }}}
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/msg.txt
- Document Length:        22 bytes
- 
- Time taken for tests:   29.144 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4400000 bytes
- Requests per second:    6862.476 [#/sec] (mean)
- Time per request:       0.14572 [ms] (mean)
- }}}
- 
-  * !HttpClient 4.x
- 
- {{{
- java -cp 
bin:/opt/libjava/commons-logging.jar:/opt/libjava/commons-codec.jar:lib/httpcore-4.0-alpha5.jar:
-    lib/httpclient-4.0-alpha1-SNAPSHOT.jar \
-    test.perf.HttpClient4PerfTest http://localhost/msg.txt 200000
- }}}
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/msg.txt
- Document Length:        22 bytes
- 
- Time taken for tests:   24.408 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4400000 bytes
- Requests per second:    8194.034 [#/sec] (mean)
- Time per request:       0.12204 [ms] (mean)
- }}}
- 
-  * !HttpCore 4.x
- 
- {{{
- java -cp bin:lib/httpcore-4.0-alpha5.jar \ 
-    test.perf.HttpCorePerfTest http://localhost/msg.txt 200000
- }}} 
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/msg.txt
- Document Length:        22 bytes
- 
- Time taken for tests:   19.567 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4400000 bytes
- Requests per second:    10221.291 [#/sec] (mean)
- Time per request:       0.097835 [ms] (mean)
- }}}
- 
- ==== 200,000 HTTP GETs, keep alive, content length: 20,000 bytes  ====
- 
-  * !HttpClient 3.x
- 
- {{{
- java -cp 
bin:/opt/libjava/commons-httpclient.jar:/opt/libjava/commons-logging.jar:/opt/libjava/commons-codec.jar
 \
-    test.perf.HttpClient3PerfTest http://localhost/blob 200000
- }}}
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/blob
- Document Length:        20000 bytes
- 
- Time taken for tests:   35.809 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4000000000 bytes
- Requests per second:    5585.1885 [#/sec] (mean)
- Time per request:       0.179045 [ms] (mean)
- }}}
- 
-  * !HttpClient 4.x
- 
- {{{
- java -cp 
bin:/opt/libjava/commons-logging.jar:/opt/libjava/commons-codec.jar:lib/httpcore-4.0-alpha5.jar:
-    lib/httpclient-4.0-alpha1-SNAPSHOT.jar \
-    test.perf.HttpClient4PerfTest http://localhost/blob 200000
- }}}
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/blob
- Document Length:        20000 bytes
- 
- Time taken for tests:   33.398 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4000000000 bytes
- Requests per second:    5988.383 [#/sec] (mean)
- Time per request:       0.16699 [ms] (mean)
- }}}
- 
-  * !HttpCore 4.x
- 
- {{{
- java -cp bin:lib/httpcore-4.0-alpha5.jar \
-    test.perf.HttpCorePerfTest http://localhost/blob 200000
- }}}
- 
- {{{
- Server Software:        Apache/2.2.3 (Ubuntu) mod_ssl/2.2.3 OpenSSL/0.9.8c
- 
- Document URI:           http://localhost/blob
- Document Length:        20000 bytes
- 
- Time taken for tests:   28.584 seconds
- Complete requests:      200000
- Failed requests:        0
- Content transferred:    4000000000 bytes
- Requests per second:    6996.9214 [#/sec] (mean)
- Time per request:       0.14292 [ms] (mean)
- }}}
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to