File: benchmark.py

package info (click to toggle)
tarantool 1.9.1.26.g63eb81e3c-1.1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 38,724 kB
  • sloc: ansic: 247,425; cpp: 24,952; sh: 17,809; python: 10,699; makefile: 2,682
file content (34 lines) | stat: -rw-r--r-- 944 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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:
        packer = _packer.Packer()
        profile("packing %s (ext)" % name, lambda: packer.pack(data))
    packer = fallback.Packer()
    profile('packing %s (fallback)' % name, lambda: packer.pack(data))

    data = packer.pack(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()