about summary refs log tree commit homepage
path: root/test/benchmark/dd.ru
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2009-03-10 18:44:34 -0700
committerEric Wong <normalperson@yhbt.net>2009-03-22 19:04:27 -0700
commit98ea5cca50b907e20d6357f425d7789bac1d1a47 (patch)
tree73e3823c0cd4f23f806ac392e66e12c3d77fc61c /test/benchmark/dd.ru
parentca4265ea4d8bdeb9c569a50a05ee45e31f4b4269 (diff)
downloadunicorn-98ea5cca50b907e20d6357f425d7789bac1d1a47.tar.gz
dd.ru is a rackup file is intended as a dd(1)-like test for I/O
performance.

There are also individual request, response, and big_request
benchmarks for micro benchmarking some parts of Unicorn.

The rest of the benchmarks are gone: I am not interested in
performance comparisons (and pissing matches) with other web
servers (or their fanboys/girls).

I will _NEVER_ publically publish benchmarks comparing Unicorn
against other web servers.  I will only compare Unicorn against
other versions of Unicorn, possibly on different platforms.

Neutral third-parties are invited to publish their own
benchmarks (along with detailed procedures, version numbers and
other details) comparing Unicorn to other servers.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'test/benchmark/dd.ru')
-rw-r--r--test/benchmark/dd.ru18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/benchmark/dd.ru b/test/benchmark/dd.ru
new file mode 100644
index 0000000..7e9a3fa
--- /dev/null
+++ b/test/benchmark/dd.ru
@@ -0,0 +1,18 @@
+# This benchmark is the simplest test of the I/O facilities in
+# unicorn.  It is meant to return a fixed-sized blob to test
+# the performance of things in Unicorn, _NOT_ the app.
+#
+# Adjusting this benchmark is done via the "bs" (byte size) and "count"
+# environment variables.  "count" designates the count of elements of
+# "bs" length in the Rack response body.  The defaults are bs=4096, count=1
+# to return one 4096-byte chunk.
+bs = ENV['bs'] ? ENV['bs'].to_i : 4096
+count = ENV['count'] ? ENV['count'].to_i : 1
+slice = (' ' * bs).freeze
+body = (1..count).map { slice }.freeze
+hdr = {
+  'Content-Length' => bs * count,
+  'Content-Type' => 'text/plain'.freeze
+}.freeze
+response = [ 200, hdr, body ].freeze
+run(lambda { |env| response })