diff --git a/perf/local_lat.lua b/perf/local_lat.lua new file mode 100644 index 0000000..378bfae --- /dev/null +++ b/perf/local_lat.lua @@ -0,0 +1,23 @@ +require("zmq") + +if not arg[2] then + print("usage: lua local_lat.lua ") + os.exit() +end + +local bind_to = arg[1] +local roundtrip_count = tonumber(arg[2]) + +local ctx = zmq.init(1, 1) +local s = zmq.socket(ctx, zmq.REP) +zmq.bind(s, bind_to) + +local msg + +for i = 1, roundtrip_count do + msg = zmq.recv(s) + zmq.send(s, msg) +end + +zmq.close(s) +zmq.term(ctx) diff --git a/perf/local_thr.lua b/perf/local_thr.lua new file mode 100644 index 0000000..e15f2b5 --- /dev/null +++ b/perf/local_thr.lua @@ -0,0 +1,39 @@ +require("zmq") + +if not arg[3] then + print("usage: lua local_thr.lua ") + os.exit() +end + +local bind_to = arg[1] +local message_size = tonumber(arg[2]) +local message_count = tonumber(arg[3]) + +local ctx = zmq.init(1, 1) +local s = zmq.socket(ctx, zmq.SUB) +zmq.setsockopt(s, zmq.SUBSCRIBE, ""); +zmq.bind(s, bind_to) + +local msg = zmq.recv(s) + +local start_time = os.time() + +for i = 1, message_count - 1 do + msg = zmq.recv(s) +end + +local end_time = os.time() + +zmq.close(s) +zmq.term(ctx) + +local elapsed = os.difftime(end_time, start_time) +if elapsed == 0 then elapsed = 1 end + +local throughput = message_count / elapsed +local megabits = throughput * message_size * 8 + +print(string.format("message size: %i [B]", message_size)) +print(string.format("message count: %i", message_count)) +print(string.format("mean throughput: %i [msg/s]", throughput)) +print(string.format("mean throughput: %.3f [Mb/s]", megabits)) diff --git a/perf/remote_lat.lua b/perf/remote_lat.lua new file mode 100644 index 0000000..d58af01 --- /dev/null +++ b/perf/remote_lat.lua @@ -0,0 +1,36 @@ +require("zmq") + +if not arg[3] then + print("usage: lua remote_lat.lua ") + os.exit() +end + +local connect_to = arg[1] +local message_size = tonumber(arg[2]) +local roundtrip_count = tonumber(arg[3]) + +local ctx = zmq.init(1, 1) +local s = zmq.socket(ctx, zmq.REQ) +zmq.connect(s, connect_to) + +local msg = "" +for i = 1, message_size do msg = msg .. "0" end + +local start_time = os.time() + +for i = 1, roundtrip_count do + zmq.send(s, msg) + msg = zmq.recv(s) +end + +local end_time = os.time() + +zmq.close(s) +zmq.term(ctx) + +local elapsed = os.difftime(end_time, start_time) +local latency = elapsed * 1000000 / roundtrip_count / 2 + +print(string.format("message size: %i [B]", message_size)) +print(string.format("roundtrip count: %i", roundtrip_count)) +print(string.format("mean latency: %.3f [us]", latency)) diff --git a/perf/remote_thr.lua b/perf/remote_thr.lua new file mode 100644 index 0000000..b200bc0 --- /dev/null +++ b/perf/remote_thr.lua @@ -0,0 +1,26 @@ +require("zmq") + +if not arg[3] then + puts "usage: lua remote_thr.lua " + os.exit() +end + +local connect_to = arg[1] +local message_size = tonumber(arg[2]) +local message_count = tonumber(arg[3]) + +local ctx = zmq.init(1, 1) +local s = zmq.socket(ctx, zmq.PUB) +zmq.connect(s, connect_to) + +local msg = "" +for i = 1, message_size do msg = msg .. "0" end + +for i = 1, message_count do + zmq.send(s, msg) +end + +os.execute("sleep " .. 10) + +zmq.close(s) +zmq.term(ctx)