sys:1: MatplotlibDeprecationWarning: The 'warn' parameter of use() is deprecated since Matplotlib 3.1 and will be removed in 3.3.  If any parameter follows 'warn', they should be pass as keyword, not positionally.

Integer test

For testing, we create a 1000x10 array, which is typical in our use cases. This could represent the result of a 1s simulation with 10 units and 1ms time bins.

A = 
 [[8 2 1 ... 5 6 3]
 [0 5 0 ... 0 6 2]
 [1 5 8 ... 1 6 4]
 ...
 [3 3 5 ... 5 5 1]
 [6 6 8 ... 5 3 3]
 [3 6 2 ... 7 5 1]]

Length of the unencoded byte sequences:

no compression  :  80128 
zlib compressed :  7196 
blosc compressed:  10150

Length of base64 encoded bytes:

no compression  :  106840   —  b'k05VTVBZAQ' 
zlib compressed :    9596   —  b'eJyd2ssS5L' 
blosc compressed:   13536   —  b'AgEBCIA4AQ'

Length of base85 encoded bytes: (First 10 encoded caracters shown)

no compression  :  100160   —  b'lTKAlP+0*0' 
zlib compressed :    8995   —  b'c$}Tu%M#?a' 
blosc compressed:   12688   —  b'0s#RCfH(mF'
zlib  compression: 61.148ms ± 0.138ms
blosc compression:  2.843ms ± 0.034ms

Floating-point test

We use the same sized array as in above, again with values within \([0,10)\), but this time with floats.

A = 
 [[3.06494772 5.63011501 8.80872879 ... 4.19862322 8.46604461 9.28346815]
 [2.82931997 3.8741498  3.18255026 ... 0.68741562 5.25392405 0.76466769]
 [7.42212217 4.98484434 8.98859852 ... 6.32017619 7.81633824 5.96741584]
 ...
 [7.3292064  4.57112954 4.36508642 ... 0.24867652 7.51388454 1.5938669 ]
 [6.92609606 3.3784268  7.78978262 ... 6.15603552 0.85188765 4.90133344]
 [9.1425061  7.12119729 9.41918639 ... 2.12476174 8.11798919 7.61706681]]

Length of the unencoded byte sequences:

no compression  :  80128 
zlib compressed :  76293 
blosc compressed:  73540

Length of base64 encoded bytes:

no compression  :  106840   —  b'k05VTVBZAQ' 
zlib compressed :  101724   —  b'eJwUl3k01G' 
blosc compressed:   98056   —  b'AgEBCIA4AQ'

Length of base85 encoded bytes: (First 10 encoded caracters shown)

no compression  :  100160   —  b'lTKAlP+0*0' 
zlib compressed :   95367   —  b'c$^fMc{J2-' 
blosc compressed:   91925   —  b'0s#RCfH(mF'
zlib  compression: 84.534ms ± 0.460ms
blosc compression:  3.151ms ± 0.026ms
LS0tCnRpdGxlOiAiTnVtcHkgc2VyaWFsaXphdGlvbiB0ZXN0cyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3B5dGhvbn0KaW1wb3J0IG51bXB5IGFzIG5wCmltcG9ydCBpbwppbXBvcnQgYmFzZTY0CmltcG9ydCB6bGliCmltcG9ydCBibG9zYwppbXBvcnQgdGltZWl0CgpjbGFzcyBDb21wcmVzc2VkQXJyYXk6CiAgZGVmIF9faW5pdF9fKHNlbGYsIEEgOm5wLm5kYXJyYXksICoqYmxvc2Nfa3dzKToKICAgIHNlbGYuYmxvc2Nfa3dzID0gYmxvc2Nfa3dzCiAgICBmID0gaW8uQnl0ZXNJTygpCiAgICBucC5zYXZlKGYsIEEpCiAgICBzZWxmLkFieXRlcyA9IGYuZ2V0dmFsdWUoKQogICAgc2VsZi56QWJ5dGVzID0gemxpYi5jb21wcmVzcyhBKQogICAgc2VsZi5iQWJ5dGVzID0gYmxvc2MuY29tcHJlc3MoQSwgKipibG9zY19rd3MpCiAgICAKICBkZWYgY29tcHJlc3Npb25fdGltZXMoc2VsZiwgcmVwZWF0PTMsIG51bWJlcj0xMCwKICAgICAgICAgICAgICAgICAgICAgICAgemxpYj16bGliLCBibG9zYz1ibG9zYyk6ICAjIEJpbmQgdG8gbG9jYWwgbmFtZXNwYWNlCiAgICBBYnl0ZXMgPSBzZWxmLkFieXRlcwogICAgenRhc2sgPSAiemxpYi5jb21wcmVzcyhBYnl0ZXMpIgogICAgaWYgbGVuKHNlbGYuYmxvc2Nfa3dzKSA9PSAwOgogICAgICBidGFzayA9ICJibG9zYy5jb21wcmVzcyhBYnl0ZXMpIgogICAgZWxzZToKICAgICAgYmt3cyA9ICIsIi5qb2luKGYie2t9PXt2fSIgZm9yIGssdiBpbiBzZWxmLmJsb3NjX2t3cy5pdGVtcygpKQogICAgICBidGFzayA9IGYiYmxvc2MuY29tcHJlc3MoQWJ5dGVzLCB7Ymt3c30pIgogICAgenRpbWluZ3MgPSB0aW1laXQucmVwZWF0KHp0YXNrLCByZXBlYXQ9cmVwZWF0LCBudW1iZXI9bnVtYmVyLCBnbG9iYWxzPWxvY2FscygpKQogICAgYnRpbWluZ3MgPSB0aW1laXQucmVwZWF0KGJ0YXNrLCByZXBlYXQ9cmVwZWF0LCBudW1iZXI9bnVtYmVyLCBnbG9iYWxzPWxvY2FscygpKQogICAgcmV0dXJuIHp0aW1pbmdzLCBidGltaW5ncwpgYGAKCiMjIEludGVnZXIgdGVzdAoKRm9yIHRlc3RpbmcsIHdlIGNyZWF0ZSBhIDEwMDB4MTAgYXJyYXksIHdoaWNoIGlzIHR5cGljYWwgaW4gb3VyIHVzZSBjYXNlcy4gVGhpcyBjb3VsZCByZXByZXNlbnQgdGhlIHJlc3VsdCBvZiBhIDFzIHNpbXVsYXRpb24gd2l0aCAxMCB1bml0cyBhbmQgMW1zIHRpbWUgYmlucy4KCmBgYHtweXRob259CkEgPSBucC5yYW5kb20ucmFuZGludCgwLCA5LCBzaXplPSgxMDAwLCAxMCkpCmNBID0gQ29tcHJlc3NlZEFycmF5KEEpCnByaW50KCJBID0gXG4iLCBzdHIoQSkpCmI2NCA9IGJhc2U2NC5iNjRlbmNvZGUoY0EuQWJ5dGVzKQp6YjY0ID0gYmFzZTY0LmI2NGVuY29kZShjQS56QWJ5dGVzKQpiYjY0ID0gYmFzZTY0LmI2NGVuY29kZShjQS5iQWJ5dGVzKQpiODUgPSBiYXNlNjQuYjg1ZW5jb2RlKGNBLkFieXRlcykKemI4NSA9IGJhc2U2NC5iODVlbmNvZGUoY0EuekFieXRlcykKYmI4NSA9IGJhc2U2NC5iODVlbmNvZGUoY0EuYkFieXRlcykKYGBgCgpMZW5ndGggb2YgdGhlIHVuZW5jb2RlZCBieXRlIHNlcXVlbmNlczoKCmBgYHtweXRob259CnByaW50KAogICJubyBjb21wcmVzc2lvbiAgOiAiLCBsZW4oY0EuQWJ5dGVzKSwgIlxuIgogICJ6bGliIGNvbXByZXNzZWQgOiAiLCBsZW4oY0EuekFieXRlcyksICJcbiIKICAiYmxvc2MgY29tcHJlc3NlZDogIiwgbGVuKGNBLmJBYnl0ZXMpCikKYGBgCgpMZW5ndGggb2YgYmFzZTY0IGVuY29kZWQgYnl0ZXM6CgpgYGB7cHl0aG9ufQpwcmludCgKICAibm8gY29tcHJlc3Npb24gIDogIiwgZiJ7bGVuKGI2NCk6NmR9IiwgZiIgIOKAlCAge2I2NFs6MTBdfSIsICJcbiIKICAiemxpYiBjb21wcmVzc2VkIDogIiwgZiJ7bGVuKHpiNjQpOjZkfSIsIGYiICDigJQgIHt6YjY0WzoxMF19IiwgIlxuIgogICJibG9zYyBjb21wcmVzc2VkOiAiLCBmIntsZW4oYmI2NCk6NmR9IiwgZiIgIOKAlCAge2JiNjRbOjEwXX0iCikKYGBgCgpMZW5ndGggb2YgYmFzZTg1IGVuY29kZWQgYnl0ZXM6ICAoRmlyc3QgMTAgZW5jb2RlZCBjYXJhY3RlcnMgc2hvd24pCgpgYGB7cHl0aG9ufQpwcmludCgKICAibm8gY29tcHJlc3Npb24gIDogIiwgZiJ7bGVuKGI4NSk6NmR9IiwgZiIgIOKAlCAge2I4NVs6MTBdfSIsICJcbiIKICAiemxpYiBjb21wcmVzc2VkIDogIiwgZiJ7bGVuKHpiODUpOjZkfSIsIGYiICDigJQgIHt6Yjg1WzoxMF19IiwgIlxuIgogICJibG9zYyBjb21wcmVzc2VkOiAiLCBmIntsZW4oYmI4NSk6NmR9IiwgZiIgIOKAlCAge2JiODVbOjEwXX0iCikKYGBgCgpgYGB7cHl0aG9ufQp6dGltaW5ncywgYnRpbWluZ3MgPSBjQS5jb21wcmVzc2lvbl90aW1lcyhyZXBlYXQ9NSwgbnVtYmVyPTMwKQpwcmludCgKICBmInpsaWIgIGNvbXByZXNzaW9uOiB7bnAubWVhbih6dGltaW5ncykqMTAwMDo2LjNmfW1zIMKxIHtucC5zdGQoenRpbWluZ3MpKjEwMDA6NS4zZn1tcyIgIlxuIgogIGYiYmxvc2MgY29tcHJlc3Npb246IHtucC5tZWFuKGJ0aW1pbmdzKSoxMDAwOj02LjNmfW1zIMKxIHtucC5zdGQoYnRpbWluZ3MpKjEwMDA6NS4zZn1tcyIKICApCmBgYAoKCgojIyBGbG9hdGluZy1wb2ludCB0ZXN0CgpXZSB1c2UgdGhlIHNhbWUgc2l6ZWQgYXJyYXkgYXMgaW4gW2Fib3ZlXSgjaW50ZWdlci10ZXN0KSwgYWdhaW4gd2l0aCB2YWx1ZXMgd2l0aGluICRbMCwxMCkkLCBidXQgdGhpcyB0aW1lIHdpdGggZmxvYXRzLgoKYGBge3B5dGhvbn0KQSA9IG5wLnJhbmRvbS5yYW5kb20oc2l6ZT0oMTAwMCwgMTApKSAqIDEwCmNBID0gQ29tcHJlc3NlZEFycmF5KEEpCnByaW50KCJBID0gXG4iLCBzdHIoQSkpCmI2NCA9IGJhc2U2NC5iNjRlbmNvZGUoY0EuQWJ5dGVzKQp6YjY0ID0gYmFzZTY0LmI2NGVuY29kZShjQS56QWJ5dGVzKQpiYjY0ID0gYmFzZTY0LmI2NGVuY29kZShjQS5iQWJ5dGVzKQpiODUgPSBiYXNlNjQuYjg1ZW5jb2RlKGNBLkFieXRlcykKemI4NSA9IGJhc2U2NC5iODVlbmNvZGUoY0EuekFieXRlcykKYmI4NSA9IGJhc2U2NC5iODVlbmNvZGUoY0EuYkFieXRlcykKYGBgCgpMZW5ndGggb2YgdGhlIHVuZW5jb2RlZCBieXRlIHNlcXVlbmNlczoKCmBgYHtweXRob259CnByaW50KAogICJubyBjb21wcmVzc2lvbiAgOiAiLCBsZW4oY0EuQWJ5dGVzKSwgIlxuIgogICJ6bGliIGNvbXByZXNzZWQgOiAiLCBsZW4oY0EuekFieXRlcyksICJcbiIKICAiYmxvc2MgY29tcHJlc3NlZDogIiwgbGVuKGNBLmJBYnl0ZXMpCikKYGBgCgpMZW5ndGggb2YgYmFzZTY0IGVuY29kZWQgYnl0ZXM6CgpgYGB7cHl0aG9ufQpwcmludCgKICAibm8gY29tcHJlc3Npb24gIDogIiwgZiJ7bGVuKGI2NCk6NmR9IiwgZiIgIOKAlCAge2I2NFs6MTBdfSIsICJcbiIKICAiemxpYiBjb21wcmVzc2VkIDogIiwgZiJ7bGVuKHpiNjQpOjZkfSIsIGYiICDigJQgIHt6YjY0WzoxMF19IiwgIlxuIgogICJibG9zYyBjb21wcmVzc2VkOiAiLCBmIntsZW4oYmI2NCk6NmR9IiwgZiIgIOKAlCAge2JiNjRbOjEwXX0iCikKYGBgCgpMZW5ndGggb2YgYmFzZTg1IGVuY29kZWQgYnl0ZXM6ICAoRmlyc3QgMTAgZW5jb2RlZCBjYXJhY3RlcnMgc2hvd24pCgpgYGB7cHl0aG9ufQpwcmludCgKICAibm8gY29tcHJlc3Npb24gIDogIiwgZiJ7bGVuKGI4NSk6NmR9IiwgZiIgIOKAlCAge2I4NVs6MTBdfSIsICJcbiIKICAiemxpYiBjb21wcmVzc2VkIDogIiwgZiJ7bGVuKHpiODUpOjZkfSIsIGYiICDigJQgIHt6Yjg1WzoxMF19IiwgIlxuIgogICJibG9zYyBjb21wcmVzc2VkOiAiLCBmIntsZW4oYmI4NSk6NmR9IiwgZiIgIOKAlCAge2JiODVbOjEwXX0iCikKYGBgCgpgYGB7cHl0aG9ufQp6dGltaW5ncywgYnRpbWluZ3MgPSBjQS5jb21wcmVzc2lvbl90aW1lcyhyZXBlYXQ9NSwgbnVtYmVyPTMwKQpwcmludCgKICBmInpsaWIgIGNvbXByZXNzaW9uOiB7bnAubWVhbih6dGltaW5ncykqMTAwMDo2LjNmfW1zIMKxIHtucC5zdGQoenRpbWluZ3MpKjEwMDA6NS4zZn1tcyIgIlxuIgogIGYiYmxvc2MgY29tcHJlc3Npb246IHtucC5tZWFuKGJ0aW1pbmdzKSoxMDAwOj02LjNmfW1zIMKxIHtucC5zdGQoYnRpbWluZ3MpKjEwMDA6NS4zZn1tcyIKICApCmBgYAo=