Use zmq.stopwatch_start() instead of socket.gettime() for benchmarks.

pull/10/head
Robert G. Jakabosky 15 years ago
parent a49943157c
commit f17bf0a4b3

@ -29,9 +29,6 @@ local message_count = tonumber(arg[3])
local zmq = require"zmq" local zmq = require"zmq"
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.PULL) local s = ctx:socket(zmq.PULL)
--s:setopt(zmq.SUBSCRIBE, ""); --s:setopt(zmq.SUBSCRIBE, "");
@ -50,21 +47,20 @@ local msg
msg = zmq.zmq_msg_t() msg = zmq.zmq_msg_t()
recv_msg(s, msg) recv_msg(s, msg)
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
recv_msg(s, msg) recv_msg(s, msg)
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("message size: %i [B]", message_size)) print(string.format("message size: %i [B]", message_size))

@ -29,9 +29,6 @@ local message_count = tonumber(arg[3])
local zmq = require"zmq" local zmq = require"zmq"
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.PULL) local s = ctx:socket(zmq.PULL)
s:bind(bind_to) s:bind(bind_to)
@ -43,22 +40,21 @@ local msg
msg = zmq.zmq_msg_t() msg = zmq.zmq_msg_t()
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("mean throughput: %i [msg/s]", throughput)) print(string.format("mean throughput: %i [msg/s]", throughput))

@ -29,9 +29,6 @@ local message_count = tonumber(arg[3])
local zmq = require"zmq" local zmq = require"zmq"
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.SUB) local s = ctx:socket(zmq.SUB)
s:setopt(zmq.SUBSCRIBE, ""); s:setopt(zmq.SUBSCRIBE, "");
@ -44,22 +41,21 @@ local msg
msg = zmq.zmq_msg_t() msg = zmq.zmq_msg_t()
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("mean throughput: %i [msg/s]", throughput)) print(string.format("mean throughput: %i [msg/s]", throughput))

@ -29,9 +29,6 @@ local message_count = tonumber(arg[3])
local zmq = require'zmq' local zmq = require'zmq'
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.SUB) local s = ctx:socket(zmq.SUB)
s:setopt(zmq.SUBSCRIBE, ""); s:setopt(zmq.SUBSCRIBE, "");
@ -40,22 +37,21 @@ s:bind(bind_to)
local msg local msg
msg = s:recv() msg = s:recv()
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
msg = s:recv() msg = s:recv()
assert(#msg == message_size, "Invalid message size") assert(#msg == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("message size: %i [B]", message_size)) print(string.format("message size: %i [B]", message_size))

@ -29,16 +29,13 @@ local roundtrip_count = tonumber(arg[3])
local zmq = require'zmq' local zmq = require'zmq'
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.REQ) local s = ctx:socket(zmq.REQ)
s:connect(connect_to) s:connect(connect_to)
local msg = ("0"):rep(message_size) local msg = ("0"):rep(message_size)
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, roundtrip_count do for i = 1, roundtrip_count do
s:send(msg) s:send(msg)
@ -46,13 +43,12 @@ for i = 1, roundtrip_count do
assert(#msg == message_size, "Invalid message size") assert(#msg == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time local latency = elapsed / roundtrip_count / 2
local latency = elapsed * 1000000 / roundtrip_count / 2
print(string.format("message size: %i [B]", message_size)) print(string.format("message size: %i [B]", message_size))
print(string.format("roundtrip count: %i", roundtrip_count)) print(string.format("roundtrip count: %i", roundtrip_count))

@ -29,9 +29,6 @@ local roundtrip_count = tonumber(arg[3])
local zmq = require"zmq" local zmq = require"zmq"
local socket = require"socket"
local time = socket.gettime
local ctx = zmq.init(1) local ctx = zmq.init(1)
local s = ctx:socket(zmq.REQ) local s = ctx:socket(zmq.REQ)
s:connect(connect_to) s:connect(connect_to)
@ -39,7 +36,7 @@ s:connect(connect_to)
local data = ("0"):rep(message_size) local data = ("0"):rep(message_size)
local msg = zmq.zmq_msg_t.init_size(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 for i = 1, roundtrip_count do
assert(s:send_msg(msg)) assert(s:send_msg(msg))
@ -47,13 +44,12 @@ for i = 1, roundtrip_count do
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
ctx:term() ctx:term()
local elapsed = end_time - start_time local latency = elapsed / roundtrip_count / 2
local latency = elapsed * 1000000 / roundtrip_count / 2
print(string.format("message size: %i [B]", message_size)) print(string.format("message size: %i [B]", message_size))
print(string.format("roundtrip count: %i", roundtrip_count)) print(string.format("roundtrip count: %i", roundtrip_count))

@ -30,9 +30,6 @@ local connect_to = arg[4] or 'inproc://thread_lat_test'
local zmq = require"zmq" local zmq = require"zmq"
local zthreads = require"zmq.threads" local zthreads = require"zmq.threads"
local socket = require"socket"
local time = socket.gettime
local child_code = [[ local child_code = [[
local connect_to, message_size, roundtrip_count = ... 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("message size: %i [B]", message_size))
print(string.format("roundtrip count: %i", roundtrip_count)) print(string.format("roundtrip count: %i", roundtrip_count))
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, roundtrip_count do for i = 1, roundtrip_count do
assert(s:send_msg(msg)) assert(s:send_msg(msg))
@ -75,14 +72,13 @@ for i = 1, roundtrip_count do
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
child_thread:join() child_thread:join()
ctx:term() ctx:term()
local elapsed = end_time - start_time local latency = elapsed / roundtrip_count / 2
local latency = elapsed * 1000000 / roundtrip_count / 2
print(string.format("mean latency: %.3f [us]", latency)) print(string.format("mean latency: %.3f [us]", latency))

@ -30,16 +30,11 @@ local connect_to = arg[4] or 'inproc://thread_lat_test'
local zmq = require"zmq" local zmq = require"zmq"
local zthreads = require"zmq.threads" local zthreads = require"zmq.threads"
local socket = require"socket"
local time = socket.gettime
local child_code = [[ local child_code = [[
local connect_to, message_size, message_count = ... local connect_to, message_size, message_count = ...
local zmq = require"zmq" local zmq = require"zmq"
local zthreads = require"zmq.threads" local zthreads = require"zmq.threads"
local socket = require"socket"
local time = socket.gettime
local ctx = zthreads.get_parent_ctx() local ctx = zthreads.get_parent_ctx()
local s = ctx:socket(zmq.PUSH) local s = ctx:socket(zmq.PUSH)
@ -49,23 +44,22 @@ local child_code = [[
local data = ("0"):rep(message_size) local data = ("0"):rep(message_size)
local msg = zmq.zmq_msg_t.init_size(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 for i = 1, message_count do
msg:set_data(data) msg:set_data(data)
assert(s:send_msg(msg)) assert(s:send_msg(msg))
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("Sender mean throughput: %i [msg/s]", throughput)) print(string.format("Sender mean throughput: %i [msg/s]", throughput))
print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits)) print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits))
@ -86,23 +80,22 @@ local msg
msg = zmq.zmq_msg_t() msg = zmq.zmq_msg_t()
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
child_thread:join() child_thread:join()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("mean throughput: %i [msg/s]", throughput)) print(string.format("mean throughput: %i [msg/s]", throughput))

@ -30,16 +30,11 @@ local connect_to = arg[4] or 'inproc://thread_lat_test'
local zmq = require"zmq" local zmq = require"zmq"
local zthreads = require"zmq.threads" local zthreads = require"zmq.threads"
local socket = require"socket"
local time = socket.gettime
local child_code = [[ local child_code = [[
local connect_to, message_size, message_count = ... local connect_to, message_size, message_count = ...
local zmq = require"zmq" local zmq = require"zmq"
local zthreads = require"zmq.threads" local zthreads = require"zmq.threads"
local socket = require"socket"
local time = socket.gettime
local ctx = zthreads.get_parent_ctx() local ctx = zthreads.get_parent_ctx()
local s = ctx:socket(zmq.PUB) local s = ctx:socket(zmq.PUB)
@ -48,23 +43,22 @@ local child_code = [[
local data = ("0"):rep(message_size) local data = ("0"):rep(message_size)
local msg = zmq.zmq_msg_t.init_size(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 for i = 1, message_count do
msg:set_data(data) msg:set_data(data)
assert(s:send_msg(msg)) assert(s:send_msg(msg))
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("Sender mean throughput: %i [msg/s]", throughput)) print(string.format("Sender mean throughput: %i [msg/s]", throughput))
print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits)) print(string.format("Sender mean throughput: %.3f [Mb/s]", megabits))
@ -86,23 +80,22 @@ local msg
msg = zmq.zmq_msg_t() msg = zmq.zmq_msg_t()
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
local start_time = time() local timer = zmq.stopwatch_start()
for i = 1, message_count - 1 do for i = 1, message_count - 1 do
assert(s:recv_msg(msg)) assert(s:recv_msg(msg))
assert(msg:size() == message_size, "Invalid message size") assert(msg:size() == message_size, "Invalid message size")
end end
local end_time = time() local elapsed = timer:stop()
s:close() s:close()
child_thread:join() child_thread:join()
ctx:term() ctx:term()
local elapsed = end_time - start_time
if elapsed == 0 then elapsed = 1 end 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 local megabits = throughput * message_size * 8 / 1000000
print(string.format("mean throughput: %i [msg/s]", throughput)) print(string.format("mean throughput: %i [msg/s]", throughput))

Loading…
Cancel
Save