mirror of
https://github.com/msgpack/msgpack-python.git
synced 2026-02-06 09:50:01 +00:00
Add simple benchmark.
This commit is contained in:
parent
8d6a387dff
commit
95dfec808a
1 changed files with 32 additions and 0 deletions
32
benchmark/benchmark.py
Normal file
32
benchmark/benchmark.py
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
from msgpack import fallback
|
||||
try:
|
||||
from msgpack import _unpacker, _packer
|
||||
has_ext = True
|
||||
except ImportError:
|
||||
has_ext = False
|
||||
import timeit
|
||||
|
||||
|
||||
def profile(name, func):
|
||||
times = timeit.repeat(func, number=1000, repeat=4)
|
||||
times = ', '.join(["%8f" % t for t in times])
|
||||
print("%-30s %40s" % (name, times))
|
||||
|
||||
|
||||
def simple(name, data):
|
||||
if has_ext:
|
||||
profile("packing %s (ext)" % name, lambda: _packer.packb(data))
|
||||
profile('packing %s (fallback)' % name, lambda: fallback.packb(data))
|
||||
|
||||
data = fallback.packb(data)
|
||||
if has_ext:
|
||||
profile('unpacking %s (ext)' % name, lambda: _unpacker.unpackb(data))
|
||||
profile('unpacking %s (fallback)' % name, lambda: fallback.unpackb(data))
|
||||
|
||||
def main():
|
||||
simple("integers", [7]*10000)
|
||||
simple("bytes", [b'x'*n for n in range(100)]*10)
|
||||
simple("lists", [[]]*10000)
|
||||
simple("dicts", [{}]*10000)
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue