Skip to content

Instantly share code, notes, and snippets.

@lovesh
Created July 17, 2017 19:49
Show Gist options
  • Save lovesh/91026887d18e803cbc2a10d013a20ba9 to your computer and use it in GitHub Desktop.
Save lovesh/91026887d18e803cbc2a10d013a20ba9 to your computer and use it in GitHub Desktop.
Comparison of serialisation and de-serialisation times on some plenum message
from random import shuffle
import ujson
import msgpack
import time
data = [
{"op":"REPLY","result":{"txnTime":1500296923,"rootHash":"ChEG5bpqvdKYhyoqSziJ5r7qtyRtkmjQYzErEW2DpuqC","type":"buy","auditPath":["3uAnG8h5rS5nwviEj49YTje8GA8tS19RsUP3MvSju9gG"],"signature":"5RGoVb8Rsc4H1jn2FZdueBAZ3kMzwJhEzLUjxtMhzXSBnQBuE438uj8Bg1b5eP82EYNKVNwFSarztQoDszid6n8w","reqId":1500316722698678,"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","seqNo":33,"amount":10}},
{"op":"REPLY","result":{"txnTime":1500296923,"rootHash":"FMWErPC9tCMusWjwfgLkhKoibQbwWWoCYWjFj9TTmHuj","type":"buy","auditPath":["AbBrT7ScWCPdKkCue5SyWx8jCvUFwgDPBSumNtGmuLYG","7qB28FcEsR93j3CrmYpAG5r1JJZAVrNHWtMKcYHspgkY","7CGsMw6jBaq8Cm5dfb1BmoV1LHk4kVjRYV83r4B1xMw9"],"signature":"3xuFE9kEo8L991Z4ztLuwgyeUTTbTW6dauKLcMbbeFffK1hRj6ywTGz3m5nhzEk5LqQQsfXTd7rq6hHchnpUSxzg","reqId":1500316722693789,"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","seqNo":29,"amount":28}},
{"op":"REPLY","result":{"txnTime":1500296923,"rootHash":"Dj2VKTBEH63ahcRpqPB8k29bxTaHtdJrdbk7MEwbrTjM","type":"buy","auditPath":["77DYvpZTXHrWsEBtU2MybJZQXTZFsTJJqoZzEk4dSycR","AbBrT7ScWCPdKkCue5SyWx8jCvUFwgDPBSumNtGmuLYG","7qB28FcEsR93j3CrmYpAG5r1JJZAVrNHWtMKcYHspgkY","7CGsMw6jBaq8Cm5dfb1BmoV1LHk4kVjRYV83r4B1xMw9"],"signature":"4GhxbWsWgTqtFjAxCkwskqjBwF4bGfJ4V8gaXhx3jmwJvpChJ5oumJ9RKugHpbq4RBUqieyPNkmhox4NcMHShF8n","reqId":1500316722694706,"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","seqNo":30,"amount":35}},
{"op":"REPLY","result":{"txnTime":1500296923,"rootHash":"9FM9JwMPVP8rvhPkFW65vFporkzDx6r8394aL4qR4xgH","type":"buy","auditPath":["BJdwyGSh4Ffrq46Vkx2zjfD2Ciq8ab2QhfBjqzCPgjfX","AbBrT7ScWCPdKkCue5SyWx8jCvUFwgDPBSumNtGmuLYG","7qB28FcEsR93j3CrmYpAG5r1JJZAVrNHWtMKcYHspgkY","7CGsMw6jBaq8Cm5dfb1BmoV1LHk4kVjRYV83r4B1xMw9"],"signature":"2orRPLNeWZ35AT3bA7m6BEkqNwByL3eY3RoicaQ1rtE2n1vFDDNoq4BSdnkWJ3QmS3NSC8Gahb8i3Tj8ZL6fCNzz","reqId":1500316722695722,"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","seqNo":31,"amount":79}},
{"op":"REPLY","result":{"txnTime":1500296923,"rootHash":"3uAnG8h5rS5nwviEj49YTje8GA8tS19RsUP3MvSju9gG","type":"buy","auditPath":["7VovLxmif9nWpGKEwx2jt17oW28sszbf1Z9TtHfAJ3Yq","BJdwyGSh4Ffrq46Vkx2zjfD2Ciq8ab2QhfBjqzCPgjfX","AbBrT7ScWCPdKkCue5SyWx8jCvUFwgDPBSumNtGmuLYG","7qB28FcEsR93j3CrmYpAG5r1JJZAVrNHWtMKcYHspgkY","7CGsMw6jBaq8Cm5dfb1BmoV1LHk4kVjRYV83r4B1xMw9"],"signature":"4MjNkx2ZaEP7XabFV14Sfn4LdTtfHnsVEUU1yUzy2K126CzCVsV1nYisqL1yDPaNtcnkmSEk7mqs861Q4RopNhTC","reqId":1500316722696802,"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","seqNo":32,"amount":21}},
{'ledgerId': 1, 'viewNo': 1, 'reqIdr': [('4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316722693789), ('4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316722694706), ('4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316722695722), ('4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316722696802), ('4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316722698678)], 'ppSeqNo': 1, 'instId': 0, 'txnRootHash': 'ChEG5bpqvdKYhyoqSziJ5r7qtyRtkmjQYzErEW2DpuqC', 'ppTime': 1500296923, 'stateRootHash': '2E5dNPuSQUwbN6mY5DMrgFU6yw13j7fer7LarJbczNU9'},
{'ledgerId': 1, 'viewNo': 0, 'reqIdr': [['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316712898040], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316712899257], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316712900157], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316712901183], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316712901876]], 'ppSeqNo': 1, 'instId': 0, 'discarded': 5, 'digest': '5eef6f910c2ca329887b371b6df74ffdfb1404428df0ea56c02fd0b7906535de', 'txnRootHash': '6FTqNFC7o3ft7dYV8z9UL8wvAYdcSXgMsGhF8BU3JTgy', 'ppTime': 1500296913, 'stateRootHash': 'ATC7APuKUK4oSDJ7XNwa6dYQLCNkraysBjri3pBqJw44'},
{'ledgerId': 1, 'viewNo': 0, 'reqIdr': [['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316714508846], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316714509606], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316714510308], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316714511018], ['4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 1500316714511702]], 'ppSeqNo': 2, 'instId': 0, 'discarded': 5, 'digest': '0630d48b65e32f46f212542bd43ba0ed67b4c3c66596546608bff148d2294770', 'txnRootHash': '2iYqZHH8sdRdpxjXzjqo27RxefkPNQN4zbBqCDPjha1S', 'ppTime': 1500296915, 'stateRootHash': '2KNeGhNTomS4Kin4oFSQhyaVakEJed1SKPiVEDRaAgqt'},
{'viewNo': 0, 'digest': 'e8cc0a81530811e5de3fd1914a6616539f0aae2f8d37efbcfecb3e89c7430c86', 'ppSeqNo': 3, 'instId': 1, 'txnRootHash': None, 'ppTime': 1500296916, 'stateRootHash': None},
{'viewNo': 0, 'digest': 'e8cc0a81530811e5de3fd1914a6616539f0aae2f8d37efbcfecb3e89c7430c86', 'ppSeqNo': 3, 'instId': 1, 'txnRootHash': None, 'ppTime': 1500296916, 'stateRootHash': None},
{'viewNo': 0, 'digest': 'e8cc0a81530811e5de3fd1914a6616539f0aae2f8d37efbcfecb3e89c7430c86', 'ppSeqNo': 3, 'instId': 1, 'txnRootHash': None, 'ppTime': 1500296916, 'stateRootHash': None},
{'instId': 1, 'viewNo': 0, 'ppSeqNo': 3},
{'instId': 1, 'viewNo': 1, 'ppSeqNo': 4},
{'instId': 1, 'viewNo': 0, 'ppSeqNo': 6},
{'messages': ['{"instId":0,"op":"COMMIT","viewNo":1,"ppSeqNo":1}', '{"instId":1,"op":"COMMIT","viewNo":1,"ppSeqNo":1}'], 'signature': None},
{'messages': ['{"instId":0,"op":"COMMIT","viewNo":0,"ppSeqNo":3}', '{"instId":1,"op":"COMMIT","viewNo":0,"ppSeqNo":3}'], 'signature': None},
{'messages': ['{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"3xuFE9kEo8L991Z4ztLuwgyeUTTbTW6dauKLcMbbeFffK1hRj6ywTGz3m5nhzEk5LqQQsfXTd7rq6hHchnpUSxzg","reqId":1500316722693789,"operation":{"type":"buy","amount":28}}', '{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"4GhxbWsWgTqtFjAxCkwskqjBwF4bGfJ4V8gaXhx3jmwJvpChJ5oumJ9RKugHpbq4RBUqieyPNkmhox4NcMHShF8n","reqId":1500316722694706,"operation":{"type":"buy","amount":35}}', '{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"2orRPLNeWZ35AT3bA7m6BEkqNwByL3eY3RoicaQ1rtE2n1vFDDNoq4BSdnkWJ3QmS3NSC8Gahb8i3Tj8ZL6fCNzz","reqId":1500316722695722,"operation":{"type":"buy","amount":79}}', '{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"4MjNkx2ZaEP7XabFV14Sfn4LdTtfHnsVEUU1yUzy2K126CzCVsV1nYisqL1yDPaNtcnkmSEk7mqs861Q4RopNhTC","reqId":1500316722696802,"operation":{"type":"buy","amount":21}}', '{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"5RGoVb8Rsc4H1jn2FZdueBAZ3kMzwJhEzLUjxtMhzXSBnQBuE438uj8Bg1b5eP82EYNKVNwFSarztQoDszid6n8w","reqId":1500316722698678,"operation":{"type":"buy","amount":10}}'], 'signature': None},
{'messages': ['{"op":"PROPAGATE","senderClient":"L\\/xaho0d+\\/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np","request":{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"3xuFE9kEo8L991Z4ztLuwgyeUTTbTW6dauKLcMbbeFffK1hRj6ywTGz3m5nhzEk5LqQQsfXTd7rq6hHchnpUSxzg","reqId":1500316722693789,"operation":{"type":"buy","amount":28}}}', '{"op":"PROPAGATE","senderClient":"L\\/xaho0d+\\/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np","request":{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"4GhxbWsWgTqtFjAxCkwskqjBwF4bGfJ4V8gaXhx3jmwJvpChJ5oumJ9RKugHpbq4RBUqieyPNkmhox4NcMHShF8n","reqId":1500316722694706,"operation":{"type":"buy","amount":35}}}', '{"op":"PROPAGATE","senderClient":"L\\/xaho0d+\\/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np","request":{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"2orRPLNeWZ35AT3bA7m6BEkqNwByL3eY3RoicaQ1rtE2n1vFDDNoq4BSdnkWJ3QmS3NSC8Gahb8i3Tj8ZL6fCNzz","reqId":1500316722695722,"operation":{"type":"buy","amount":79}}}', '{"op":"PROPAGATE","senderClient":"L\\/xaho0d+\\/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np","request":{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"4MjNkx2ZaEP7XabFV14Sfn4LdTtfHnsVEUU1yUzy2K126CzCVsV1nYisqL1yDPaNtcnkmSEk7mqs861Q4RopNhTC","reqId":1500316722696802,"operation":{"type":"buy","amount":21}}}', '{"op":"PROPAGATE","senderClient":"L\\/xaho0d+\\/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np","request":{"identifier":"4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ","signature":"5RGoVb8Rsc4H1jn2FZdueBAZ3kMzwJhEzLUjxtMhzXSBnQBuE438uj8Bg1b5eP82EYNKVNwFSarztQoDszid6n8w","reqId":1500316722698678,"operation":{"type":"buy","amount":10}}}'], 'signature': None},
{'op': 'PROPAGATE', 'senderClient': 'L/xaho0d+/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np', 'request': {'identifier': '4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 'signature': '5RGoVb8Rsc4H1jn2FZdueBAZ3kMzwJhEzLUjxtMhzXSBnQBuE438uj8Bg1b5eP82EYNKVNwFSarztQoDszid6n8w', 'reqId': 1500316722698678, 'operation': {'type': 'buy', 'amount': 10}}},
{"op":"VIEW_CHANGE_DONE","ledgerInfo":[[0,4,"8bGVVnkP4VgErUTCYNEAru2HwGcGwMHzHWjqnyiXUa1P"],[1,8,"3ktxCq9H3wSY8sudPAdZWjppmZbb6rLtBjWkE2ixuzzg"]],"viewNo":0,"name":"Alpha"},
{'senderClient': 'L/xaho0d+/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np', 'request': {'identifier': '4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 'signature': '3GvA8KJtnAzNgdsY5FVByvYmtMu4AiDNhgFjjH6qz46SmAtonR3t3QKWrXVdK7WxtAs7ZnuFYp33x7VGnorVhHr7', 'reqId': 1500316717621088, 'operation': {'type': 'buy', 'amount': 46}}},
{'senderClient': 'L/xaho0d+/YQXd(Vba.s.B(t#BL]l=Y}?PaY$6np', 'request': {'identifier': '4AdS22kC7xzb4bcqg9JATuCfAMNcQYcZa1u5eWzs6cSJ', 'signature': 'h75ou4KFwFAa16oTEk7Ct1c3NjX4jozCgLuLwUEp6GNm3iRUUW62bnaGEiJzGfPxod6PJN7Rshs6vZHRpvqoLZB', 'reqId': 1500316717621837, 'operation': {'type': 'buy', 'amount': 56}}}
]
data = data * 10000
shuffle(data)
serz_uj = []
start = time.perf_counter()
for d in data:
serz_uj.append(ujson.dumps(d))
end = time.perf_counter()
print('Time to serialise(ujson) {} is {}'.format(len(data), end-start))
start = time.perf_counter()
for s in serz_uj:
ujson.loads(s)
end = time.perf_counter()
print('Time to deserialise(ujson) {} is {}'.format(len(serz_uj), end-start))
# Free up memory
del serz_uj
shuffle(data)
serz_mp = []
start = time.perf_counter()
for d in data:
serz_mp.append(msgpack.packb(d))
end = time.perf_counter()
print('Time to serialise(msgpack) {} is {}'.format(len(data), end-start))
start = time.perf_counter()
for s in serz_mp:
msgpack.unpackb(s)
end = time.perf_counter()
print('Time to deserialise(msgpack) {} is {}'.format(len(serz_mp), end-start))
@lovesh
Copy link
Author

lovesh commented Jul 17, 2017

Results from a few runs:

Time to serialise(ujson) 220000 is 0.399433288956061
Time to deserialise(ujson) 220000 is 0.46916888805571944
Time to serialise(msgpack) 220000 is 0.6025638380087912
Time to deserialise(msgpack) 220000 is 0.2603249381063506

Time to serialise(ujson) 220000 is 0.397137348074466
Time to deserialise(ujson) 220000 is 0.4778624640312046
Time to serialise(msgpack) 220000 is 0.5980504660401493
Time to deserialise(msgpack) 220000 is 0.27140531793702394

Time to serialise(ujson) 220000 is 0.39627793803811073
Time to deserialise(ujson) 220000 is 0.47533594293054193
Time to serialise(msgpack) 220000 is 0.5963092749007046
Time to deserialise(msgpack) 220000 is 0.25805347599089146

Time to serialise(ujson) 220000 is 0.40462166198994964
Time to deserialise(ujson) 220000 is 0.4784395210444927
Time to serialise(msgpack) 220000 is 0.6070503749651834
Time to deserialise(msgpack) 220000 is 0.2604035179829225

Time to serialise(ujson) 220000 is 0.3965471190167591
Time to deserialise(ujson) 220000 is 0.4731138839852065
Time to serialise(msgpack) 220000 is 0.6014889010693878
Time to deserialise(msgpack) 220000 is 0.260304696043022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment