Last Updated: 2003-04-04 16:47:10

Welcome to the Hello World! benchmarks. This site seeks to give its visitors a sense of web application execution speed on various software platforms running under the Apache web server.

While there are some numbers here available for your review, benchmarking does not provide a real world assessment for any application operating in a specific real world scenario, and this does not try to demonstrate any proof that any system is better than any other. More often than not, the benchmarks themselves are are too simple to fully utilize an application's strength or reveal its weaknesses. The benchmarks instead tend to be written for a lowest common denominator so more web applications can compete than not.

For best effect, a user should glance at the below numbers, understand the limitations of benchmarking, and then run the benchmark suite on his or her particular hardware. The benchmark suite is available for download here.

Once downloaded, please read the distribution's README for more infomation on how to run the benchmark tool bench.pl. You must have a UNIX system with Apache installed plus any web applications you want to test.

Please send any suggestions to this email

Benchmark Descriptions

Hello World 2000   ( 2000 )
The 2000 benchmark tries to emulate a heavy web page template. It is typically 3K+ in program length that results in output of over 20K. While this does not properly reflect any web application's speed of back end business logic execution, it does show a template heavy request with some application logic and loops, some HTTP parameter passing, and much variable interpolation in the output stream.
Hello World   ( hello )
The Hello World benchmark merely prints "Hello World" and as such is a good test for the fastest a web page could ever run under the given web application environment. For historical reasons, the benchmarks are written to print "Hello" and then add to the output World as a raw string.
HelloDB   ( hellodb )
The HelloDB benchmark merely queries the database for the string "Hello World", and as such represents the fastest a web application can process a request when talking to a database. This is a new benchmark with only MySQL supported for now, but more environments and databases will be added over time.
XSLT Big   ( xsltbig )
This benchmark hits an XSLT rendering engine hard with 18K+ XML being transformed with a 1K+ XSL stylesheet for over 20K output. Though XSLT is generally slow, many applications will use XSLT caching to speed up response times. This benchmark should emulate well a real world XSLT usage scenario, with perhaps the XSL itself being too trivial.
Hello XSLT   ( xslt )
Like the Hello World benchmark, the XSLT version just outputs "Hello World", or the closest we can get when doing XSLT, so it too demonstrates the fastest an application can render a page with XSLT. Benchmarks should be similarly configured between xsltbig and xslt, so a slow caching layer that benefits the former might slow down this benchmark.

Benchmark Graphs


  Requests/sec
  System Memory Used in Megabytes (Estimate)

  Requests/sec
  System Memory Used in Megabytes (Estimate)

  Requests/sec
  System Memory Used in Megabytes (Estimate)

  Requests/sec
  System Memory Used in Megabytes (Estimate)

  Requests/sec
  System Memory Used in Megabytes (Estimate)

Benchmark System Configuration

Apache: Apache, Apache/1.3.27, AxKit/1.6, Coyote/1.0, Embperl/2.0b8, OpenSSL/0.9.6g, PHP/4.3.0, Resin/2.1.2, mod_fastcgi/2.2.12, mod_perl/1.27, mod_ssl/2.8.12
Perl: 5.008
Kernel: Linux 2.4.7-10 (bhcompile@stripples) (gcc 2.96 20000731 ) #1 1CPU [gate]
Java: java version "1.4.0_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0_01-b03) Java HotSpot(TM) Client VM (build 1.4.0_01-b03, mixed mode)
Memory: 1G
Cpu: 2.4 GHz PIV (Uniprocessor), 400 MHz bus
Filesystem: ext3, Software RAID 1
Storage: 2 x 7200 RPM ATA 60G

Application References

Benchmark Data ( data.xml )

Type Name File Hits/sec Hits Time (sec) Output (Bytes) Memory (KB)
2000 Apache::ASP v2.53 mod_perl 2000 h2000.asp 438.3 19725 45.01 29025 31112
2000 Apache::Registry v2.01 mod_perl 2000 h2000.reg 851.7 38330 45.01 28196 13796
2000 C Apache API mod_h2000 mod_h2000.c 2008.7 50000 24.89 28222 6724
2000 Embperl v2.0b8 mod_perl 2000 h2000.epl 483.7 21770 45.01 28820 35884
2000 HTML::Embperl v1.3.6 mod_perl 2000 h2000.epl 335.4 15092 45.00 28858 20952
2000 HTML::Mason v1.19 mod_perl 2000 h2000.mas 51.9 2337 45.00 28805 67196
2000 HTML::Template v2.6 mod_perl 2000 h2000.htmp 234.1 10535 45.00 29169 20488
2000 Resin2 JSP 2000 h2000.jsp 730.6 32881 45.01 28929 18744
2000 Template v2.08 Toolkit mod_perl 2000 h2000.tt 303.0 13633 45.00 28906 60664
2000 Tomcat4 JSP 2000 h2000.jsp 401.1 18056 45.02 28954 52464
2000 mod_cgi CGI.pm 2000 h2000.cgi 24.1 1084 45.05 28215 27120
2000 mod_perl 2000 h2000.pm 951.6 42826 45.01 28196 8036
2000 mod_php PHP 2000 h2000.php 651.7 29330 45.00 28880 9956
hello Apache::ASP mod_cgi Hello hello.asp 9.5 429 45.04 258 52396
hello Apache::ASP v2.53 mod_perl Hello hello.asp 574.5 25852 45.00 258 27964
hello Apache::Dispatch v0.09 mod_perl handler hello/world 1265.0 50000 39.52 214 12936
hello Apache::Registry v2.01 mod_perl CGI Raw hello.cgiraw 1555.1 50000 32.15 52 12504
hello Apache::Registry v2.01 mod_perl CGI.pm hello.cgi 947.6 42648 45.01 234 18308
hello Apache::SSI v2.17 mod_perl hello.shtml 1117.6 50000 44.74 217 12912
hello C Apache API mod_hello mod_hello.c 4285.2 50000 11.67 214 4444
hello CGI::SpeedyCGI CGI Raw hello.scgiraw 361.1 16248 45.00 214 9440
hello CGI::SpeedyCGI CGI.pm hello.scgi 149.0 6703 45.00 234 9884
hello Embperl v2.0b8 mod_perl Hello hello.epl 849.8 38240 45.00 230 17212
hello HTML static hello.html 3557.5 50000 14.05 330 4636
hello HTML::Embperl v1.3.6 mod_perl hello.epl 879.6 39584 45.00 238 9180
hello HTML::Mason v1.19 mod_perl hello.mas 235.3 10587 45.00 216 50088
hello HTML::Template v2.6 mod_perl hello.htmp 1178.5 50000 42.43 216 18036
hello Resin2 JSP hello.jsp 1043.4 46955 45.00 195 23284
hello Template v2.08 Toolkit mod_perl hello.tt 976.8 43965 45.01 216 53980
hello Tomcat4 JSP hello.jsp 775.0 34877 45.00 200 44764
hello mod_cgi CGI Raw hello.cgiraw 271.9 12238 45.00 214 8248
hello mod_cgi CGI.pm hello.cgi 26.7 1201 45.01 234 26992
hello mod_fastcgi CGI::Fast hello.fastcgi 911.9 41036 45.00 234 5488
hello mod_include SSI hello.shtml 2475.5 50000 20.20 216 6732
hello mod_perl handler hello.bench 2128.7 50000 23.49 214 8624
hello mod_php PHP hello.php 1601.2 50000 31.23 240 8104
hello mod_proxy hello/proxy 1250.0 50000 40.00 371 8244
hellodb Apache::ASP v2.53 mod_perl HelloDB MySQL my_hellodb.asp 480.2 21611 45.00 254 34272
hellodb C Apache API HelloDB MySQL mod_my_hellodb.c 3046.6 50000 16.41 211 6760
hellodb Resin2 JSP HelloDB MySQL my_hellodb.jsp 815.4 36692 45.00 202 23288
hellodb Tomcat4 JSP HelloDB MySQL my_hellodb.jsp 627.3 28246 45.03 207 44808
hellodb mod_perl HelloDB MySQL my_hellodb.pm 1219.9 50000 40.99 211 18924
hellodb mod_php PHP HelloDB MySQL my_hellodb.php 796.8 35864 45.01 236 9860
xslt Apache::ASP v2.53 mod_perl XSLT Hello hxslt.xml 355.8 16011 45.00 294 36388
xslt AxKit v1.6 mod_perl XSLT Hello hxslt.xml 607.5 27347 45.01 426 57764
xslt Cocoon Tomcat4 XSLT Hello hxslt.xml 99.3 4481 45.11 238 68684
xslt Embperl v2.0b8 mod_perl XSLT Hello hxslt.xml 813.1 36593 45.01 263 26416
xslt Resin2 JSP XSLT hxslt.jsp 1033.4 46505 45.00 357 24464
xslt mod_php PHP XSLT Hello hxslt.php 813.2 36595 45.00 275 10716
xsltbig Apache::ASP v2.53 mod_perl XSLT Big hxsltbig.xml 256.8 11557 45.00 21550 44432
xsltbig AxKit v1.6 mod_perl XSLT Big hxsltbig.xml 575.7 25910 45.01 21685 56596
xsltbig Cocoon Tomcat4 XSLT Big hxsltbig.xml 93.3 4201 45.01 21932 82856
xsltbig Embperl v2.0b8 mod_perl XSLT Big hxsltbig.xml 116.3 5232 45.00 21516 27676
xsltbig Resin2 JSP XSLT Big hxsltbig.jsp 853.7 38418 45.00 21783 25100
xsltbig mod_php PHP XSLT Big hxsltbig.php 113.0 5085 45.01 21528 16464