mirror of
				https://github.com/msgpack/msgpack-python.git
				synced 2025-11-04 03:20:56 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			951 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			951 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from msgpack import fallback
 | 
						|
 | 
						|
try:
 | 
						|
    from msgpack import _cmsgpack
 | 
						|
 | 
						|
    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 = _cmsgpack.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: _cmsgpack.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()
 |