From f17bf0a4b3623748e9e3f9cdb3abd31b6cb0b620 Mon Sep 17 00:00:00 2001 From: "Robert G. Jakabosky" Date: Mon, 2 May 2011 17:04:53 -0700 Subject: [PATCH] Use zmq.stopwatch_start() instead of socket.gettime() for benchmarks. --- perf/local_multipart.lua | 10 +++------- perf/local_pull.lua | 10 +++------- perf/local_thr.lua | 10 +++------- perf/no_msg/local_thr.lua | 10 +++------- perf/no_msg/remote_lat.lua | 10 +++------- perf/remote_lat.lua | 10 +++------- perf/thread_lat.lua | 10 +++------- perf/thread_push_pull.lua | 23 ++++++++--------------- perf/thread_thr.lua | 23 ++++++++--------------- 9 files changed, 37 insertions(+), 79 deletions(-) diff --git a/perf/local_multipart.lua b/perf/local_multipart.lua index 97c33f6..7d3ab99 100644 --- a/perf/local_multipart.lua +++ b/perf/local_multipart.lua @@ -29,9 +29,6 @@ local message_count = tonumber(arg[3]) local zmq = require"zmq" -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.PULL) --s:setopt(zmq.SUBSCRIBE, ""); @@ -50,21 +47,20 @@ local msg msg = zmq.zmq_msg_t() recv_msg(s, msg) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do recv_msg(s, msg) end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("message size: %i [B]", message_size)) diff --git a/perf/local_pull.lua b/perf/local_pull.lua index 189aee1..a515f60 100644 --- a/perf/local_pull.lua +++ b/perf/local_pull.lua @@ -29,9 +29,6 @@ local message_count = tonumber(arg[3]) local zmq = require"zmq" -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.PULL) s:bind(bind_to) @@ -43,22 +40,21 @@ local msg msg = zmq.zmq_msg_t() assert(s:recv_msg(msg)) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do assert(s:recv_msg(msg)) assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("mean throughput: %i [msg/s]", throughput)) diff --git a/perf/local_thr.lua b/perf/local_thr.lua index fc20569..572c4e0 100644 --- a/perf/local_thr.lua +++ b/perf/local_thr.lua @@ -29,9 +29,6 @@ local message_count = tonumber(arg[3]) local zmq = require"zmq" -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.SUB) s:setopt(zmq.SUBSCRIBE, ""); @@ -44,22 +41,21 @@ local msg msg = zmq.zmq_msg_t() assert(s:recv_msg(msg)) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do assert(s:recv_msg(msg)) assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("mean throughput: %i [msg/s]", throughput)) diff --git a/perf/no_msg/local_thr.lua b/perf/no_msg/local_thr.lua index 45f2646..73904be 100644 --- a/perf/no_msg/local_thr.lua +++ b/perf/no_msg/local_thr.lua @@ -29,9 +29,6 @@ local message_count = tonumber(arg[3]) local zmq = require'zmq' -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.SUB) s:setopt(zmq.SUBSCRIBE, ""); @@ -40,22 +37,21 @@ s:bind(bind_to) local msg msg = s:recv() -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do msg = s:recv() assert(#msg == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("message size: %i [B]", message_size)) diff --git a/perf/no_msg/remote_lat.lua b/perf/no_msg/remote_lat.lua index 08f7501..0dd1a89 100644 --- a/perf/no_msg/remote_lat.lua +++ b/perf/no_msg/remote_lat.lua @@ -29,16 +29,13 @@ local roundtrip_count = tonumber(arg[3]) local zmq = require'zmq' -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.REQ) s:connect(connect_to) local msg = ("0"):rep(message_size) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, roundtrip_count do s:send(msg) @@ -46,13 +43,12 @@ for i = 1, roundtrip_count do assert(#msg == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time -local latency = elapsed * 1000000 / roundtrip_count / 2 +local latency = elapsed / roundtrip_count / 2 print(string.format("message size: %i [B]", message_size)) print(string.format("roundtrip count: %i", roundtrip_count)) diff --git a/perf/remote_lat.lua b/perf/remote_lat.lua index 631d0b4..4376f60 100644 --- a/perf/remote_lat.lua +++ b/perf/remote_lat.lua @@ -29,9 +29,6 @@ local roundtrip_count = tonumber(arg[3]) local zmq = require"zmq" -local socket = require"socket" -local time = socket.gettime - local ctx = zmq.init(1) local s = ctx:socket(zmq.REQ) s:connect(connect_to) @@ -39,7 +36,7 @@ s:connect(connect_to) local data = ("0"):rep(message_size) local msg = zmq.zmq_msg_t.init_size(message_size) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, roundtrip_count do assert(s:send_msg(msg)) @@ -47,13 +44,12 @@ for i = 1, roundtrip_count do assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() ctx:term() -local elapsed = end_time - start_time -local latency = elapsed * 1000000 / roundtrip_count / 2 +local latency = elapsed / roundtrip_count / 2 print(string.format("message size: %i [B]", message_size)) print(string.format("roundtrip count: %i", roundtrip_count)) diff --git a/perf/thread_lat.lua b/perf/thread_lat.lua index bceda2d..93ed691 100644 --- a/perf/thread_lat.lua +++ b/perf/thread_lat.lua @@ -30,9 +30,6 @@ local connect_to = arg[4] or 'inproc://thread_lat_test' local zmq = require"zmq" local zthreads = require"zmq.threads" -local socket = require"socket" -local time = socket.gettime - local child_code = [[ local connect_to, message_size, roundtrip_count = ... @@ -67,7 +64,7 @@ local msg = zmq.zmq_msg_t.init_size(message_size) print(string.format("message size: %i [B]", message_size)) print(string.format("roundtrip count: %i", roundtrip_count)) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, roundtrip_count do assert(s:send_msg(msg)) @@ -75,14 +72,13 @@ for i = 1, roundtrip_count do assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() child_thread:join() ctx:term() -local elapsed = end_time - start_time -local latency = elapsed * 1000000 / roundtrip_count / 2 +local latency = elapsed / roundtrip_count / 2 print(string.format("mean latency: %.3f [us]", latency)) diff --git a/perf/thread_push_pull.lua b/perf/thread_push_pull.lua index 3ac6e2f..f69ff48 100644 --- a/perf/thread_push_pull.lua +++ b/perf/thread_push_pull.lua @@ -30,16 +30,11 @@ local connect_to = arg[4] or 'inproc://thread_lat_test' local zmq = require"zmq" local zthreads = require"zmq.threads" -local socket = require"socket" -local time = socket.gettime - local child_code = [[ local connect_to, message_size, message_count = ... local zmq = require"zmq" local zthreads = require"zmq.threads" - local socket = require"socket" - local time = socket.gettime local ctx = zthreads.get_parent_ctx() local s = ctx:socket(zmq.PUSH) @@ -49,23 +44,22 @@ local child_code = [[ local data = ("0"):rep(message_size) local msg = zmq.zmq_msg_t.init_size(message_size) - local start_time = time() + local timer = zmq.stopwatch_start() for i = 1, message_count do msg:set_data(data) assert(s:send_msg(msg)) end - local end_time = time() + local elapsed = timer:stop() s:close() - local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end - - local throughput = message_count / elapsed + + local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 - + print(string.format("Sender mean throughput: %i [msg/s]", throughput)) print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits)) @@ -86,23 +80,22 @@ local msg msg = zmq.zmq_msg_t() assert(s:recv_msg(msg)) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do assert(s:recv_msg(msg)) assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() child_thread:join() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("mean throughput: %i [msg/s]", throughput)) diff --git a/perf/thread_thr.lua b/perf/thread_thr.lua index e9a20dc..b5ce029 100644 --- a/perf/thread_thr.lua +++ b/perf/thread_thr.lua @@ -30,16 +30,11 @@ local connect_to = arg[4] or 'inproc://thread_lat_test' local zmq = require"zmq" local zthreads = require"zmq.threads" -local socket = require"socket" -local time = socket.gettime - local child_code = [[ local connect_to, message_size, message_count = ... local zmq = require"zmq" local zthreads = require"zmq.threads" - local socket = require"socket" - local time = socket.gettime local ctx = zthreads.get_parent_ctx() local s = ctx:socket(zmq.PUB) @@ -48,23 +43,22 @@ local child_code = [[ local data = ("0"):rep(message_size) local msg = zmq.zmq_msg_t.init_size(message_size) - local start_time = time() + local timer = zmq.stopwatch_start() for i = 1, message_count do msg:set_data(data) assert(s:send_msg(msg)) end - local end_time = time() + local elapsed = timer:stop() s:close() - local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end - - local throughput = message_count / elapsed + + local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 - + print(string.format("Sender mean throughput: %i [msg/s]", throughput)) print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits)) @@ -86,23 +80,22 @@ local msg msg = zmq.zmq_msg_t() assert(s:recv_msg(msg)) -local start_time = time() +local timer = zmq.stopwatch_start() for i = 1, message_count - 1 do assert(s:recv_msg(msg)) assert(msg:size() == message_size, "Invalid message size") end -local end_time = time() +local elapsed = timer:stop() s:close() child_thread:join() ctx:term() -local elapsed = end_time - start_time if elapsed == 0 then elapsed = 1 end -local throughput = message_count / elapsed +local throughput = message_count / (elapsed / 1000000) local megabits = throughput * message_size * 8 / 1000000 print(string.format("mean throughput: %i [msg/s]", throughput))