Skip to content

Commit 3e73ff8

Browse files
authored
Merge pull request #105 from matusvalo/benchmark
Fixed benchmark.py file
2 parents e605824 + 1db05ff commit 3e73ff8

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

benchmark.py

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
import timeit
22

3-
QS = ("amqplib.benchmark", "librabbit.benchmark")
4-
5-
63
INIT_COMMON = """
74
connection = amqp.Connection(hostname="localhost", userid="guest",
8-
password="guest", virtual_host="/")
5+
password="guest", virtual_host="/", lazy=True)
6+
connection.connect()
97
channel = connection.channel()
108
channel.exchange_declare(Q, "direct")
119
channel.queue_declare(Q)
1210
channel.queue_bind(Q, Q, Q)
1311
"""
1412

15-
INIT_AMQPLIB = """
16-
from amqplib import client_0_8 as amqp
17-
Q = "amqplib.benchmark"
13+
INIT_AMQP = """
14+
import amqp
15+
Q = "amqp.benchmark"
1816
%s
1917
""" % INIT_COMMON
2018

@@ -35,7 +33,7 @@
3533
"""
3634

3735
CONSUME = """
38-
method = getattr(channel, "wait", None) or connection.drain_events
36+
method = connection.drain_events
3937
def callback(m):
4038
channel.basic_ack(m.delivery_info["delivery_tag"])
4139
channel.basic_consume(Q, callback=callback)
@@ -45,31 +43,45 @@ def callback(m):
4543

4644

4745
def bench_basic_publish(iterations=10000, bytes=256):
48-
t_publish_amqplib = timeit.Timer(stmt=PUBLISH % bytes,
49-
setup=INIT_AMQPLIB)
46+
t_publish_amqp = timeit.Timer(stmt=PUBLISH % bytes,
47+
setup=INIT_AMQP)
5048
t_publish_librabbit = timeit.Timer(stmt=PUBLISH_LIBRABBIT % bytes,
5149
setup=INIT_LIBRABBIT)
52-
print("basic.publish: (%s byte messages)" % bytes)
53-
print(" amqplib: %.2f usec/pass" % (
54-
iterations * t_publish_amqplib.timeit(number=iterations)/iterations))
55-
print(" librabbit: %.2f usec/pass" % (
56-
iterations * t_publish_librabbit.timeit(number=iterations)/iterations))
50+
print("basic.publish: (%s x %s bytes messages)" % (iterations, bytes))
51+
print(" amqp: %.2f sec/pass" % (
52+
iterations * t_publish_amqp.timeit(number=iterations)/iterations)
53+
)
54+
print(" librabbit: %.2f sec/pass" % (
55+
iterations * t_publish_librabbit.timeit(number=iterations)/iterations)
56+
)
5757

58-
def bench_basic_consume(iterations=10000):
58+
def bench_basic_consume(iterations=10000, bytes=None):
5959
context = {"its": (iterations/2)/10}
60-
t_consume_amqplib = timeit.Timer(stmt=CONSUME % context,
61-
setup=INIT_AMQPLIB)
60+
t_consume_amqp = timeit.Timer(stmt=CONSUME % context,
61+
setup=INIT_AMQP)
6262
t_consume_librabbit = timeit.Timer(stmt=CONSUME % context,
6363
setup=INIT_LIBRABBIT)
6464
print("basic.consume (%s msg/pass) " % context["its"])
65-
print(" amqplib: %.2f usec/pass" % (
66-
10 * t_consume_amqplib.timeit(number=10)/10))
67-
print(" librabbit: %.2f usec/pass" % (
68-
10 * t_consume_librabbit.timeit(number=10)/10))
65+
print(" amqp: %.2f sec/pass" % (
66+
t_consume_amqp.timeit(number=10))
67+
)
68+
print(" librabbit: %.2f sec/pass" % (
69+
t_consume_librabbit.timeit(number=10))
70+
)
71+
6972
benchmarks = [bench_basic_publish, bench_basic_consume]
7073

7174
if __name__ == "__main__":
75+
import argparse
76+
77+
parser = argparse.ArgumentParser(description='Runs benchmark against local RabbitMQ instance.')
78+
parser.add_argument('--iters', metavar='N', type=int, default=100000,
79+
help='Number of iterations')
80+
parser.add_argument('--bytes', metavar='B', type=int,
81+
default=256, help='Message size')
82+
83+
args = parser.parse_args()
7284
for benchmark in benchmarks:
73-
benchmark(100000)
85+
benchmark(args.iters, bytes=args.bytes)
7486

7587

0 commit comments

Comments
 (0)