COMPAS serialization benchmark
generated 2026-10-16 21:24 · preset quick · repeat 5 · seed 42 · compas 2.15.1 · @py3: compas 2.15.0 (remove-future @ 6fb509e + 0001-accept-frame-components-and-declare-typing-extensions.patch)
Show formats 31/31 of compas_pb's serializable types are benchmarked. — full coverage.
json · compact text, losslesscompas_pb · protobuf binary, double + flat arrays (optimized)json@py3 · compact text, lossless (compas variant 'py3')
arcs
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 262.0 KB | 1.0× | 6.1 ms | 22.2 ms | 28.3 ms | 12.062 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 130.9 KB | 2.002× | 5.0 ms | 12.6 ms | 17.6 ms | 10.617 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 262.0 KB | 1.0× | 6.3 ms | 23.3 ms | 29.6 ms | 11.493 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.6 MB | 1.0× | 61.3 ms | 233.7 ms | 295.0 ms | 11.479 | 14.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.3 MB | 2.002× | 49.8 ms | 133.7 ms | 183.5 ms | 10.026 | 11.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.6 MB | 1.0× | 63.9 ms | 238.6 ms | 302.5 ms | 11.242 | 14.5 MB | 0 | ✓ yes |
beziers
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 325.4 KB | 1.0× | 7.6 ms | 8.5 ms | 16.0 ms | 39.431 | 1.6 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 151.4 KB | 2.15× | 4.1 ms | 5.4 ms | 9.5 ms | 28.969 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 325.4 KB | 1.0× | 7.8 ms | 8.3 ms | 16.0 ms | 40.344 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 3.2 MB | 1.0× | 75.7 ms | 94.7 ms | 170.3 ms | 35.201 | 15.5 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.5 MB | 2.15× | 41.8 ms | 57.2 ms | 99.0 ms | 27.102 | 11.2 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 3.2 MB | 1.0× | 78.0 ms | 89.7 ms | 167.6 ms | 37.163 | 15.2 MB | 0 | ✓ yes |
boxes
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 278.9 KB | 1.0× | 6.3 ms | 22.3 ms | 28.7 ms | 12.786 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 127.9 KB | 2.18× | 4.6 ms | 12.2 ms | 16.8 ms | 10.728 | 1.2 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 278.9 KB | 1.0× | 6.6 ms | 22.7 ms | 29.3 ms | 12.597 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.7 MB | 1.0× | 62.3 ms | 232.3 ms | 294.6 ms | 12.29 | 15.3 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.18× | 46.7 ms | 126.3 ms | 173.0 ms | 10.37 | 11.5 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.7 MB | 1.0× | 64.2 ms | 234.9 ms | 299.1 ms | 12.158 | 15.3 MB | 0 | ✓ yes |
capsules
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 259.6 KB | 1.0× | 6.0 ms | 21.7 ms | 27.7 ms | 12.26 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 122.1 KB | 2.127× | 4.6 ms | 12.0 ms | 16.6 ms | 10.41 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 259.6 KB | 1.0× | 6.2 ms | 22.5 ms | 28.7 ms | 11.792 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.5 MB | 1.0× | 59.4 ms | 226.2 ms | 285.7 ms | 11.749 | 14.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.127× | 44.8 ms | 125.0 ms | 169.8 ms | 9.997 | 11.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.5 MB | 1.0× | 61.4 ms | 233.6 ms | 295.0 ms | 11.38 | 14.7 MB | 0 | ✓ yes |
circles
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 231.6 KB | 1.0× | 5.7 ms | 22.4 ms | 28.1 ms | 10.585 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 112.3 KB | 2.062× | 4.4 ms | 12.1 ms | 16.5 ms | 9.52 | 1.0 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 231.6 KB | 1.0× | 5.8 ms | 21.9 ms | 27.7 ms | 10.838 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 2.3 MB | 1.0× | 55.7 ms | 224.8 ms | 280.5 ms | 10.553 | 13.6 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.1 MB | 2.063× | 45.1 ms | 125.3 ms | 170.4 ms | 9.179 | 10.3 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.3 MB | 1.0× | 56.5 ms | 228.2 ms | 284.6 ms | 10.397 | 13.4 MB | 0 | ✓ yes |
cones
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 256.5 KB | 1.0× | 6.1 ms | 21.7 ms | 27.8 ms | 12.089 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 119.2 KB | 2.153× | 4.5 ms | 12.0 ms | 16.5 ms | 10.182 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 256.5 KB | 1.0× | 6.2 ms | 22.5 ms | 28.7 ms | 11.681 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.5 MB | 1.0× | 59.6 ms | 246.8 ms | 306.4 ms | 10.643 | 14.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.153× | 45.3 ms | 127.8 ms | 173.0 ms | 9.55 | 11.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.5 MB | 1.0× | 60.8 ms | 233.0 ms | 293.7 ms | 11.274 | 14.7 MB | 0 | ✓ yes |
cylinders
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 260.4 KB | 1.0× | 6.0 ms | 23.0 ms | 28.9 ms | 11.615 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 123.1 KB | 2.116× | 4.6 ms | 12.0 ms | 16.6 ms | 10.461 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 260.4 KB | 1.0× | 6.3 ms | 22.5 ms | 28.8 ms | 11.86 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.5 MB | 1.0× | 61.4 ms | 228.5 ms | 289.9 ms | 11.669 | 14.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.116× | 45.9 ms | 125.0 ms | 170.9 ms | 10.083 | 11.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.5 MB | 1.0× | 61.4 ms | 232.1 ms | 293.5 ms | 11.487 | 14.8 MB | 0 | ✓ yes |
ellipses
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 257.6 KB | 1.0× | 6.0 ms | 22.1 ms | 28.1 ms | 11.909 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 122.1 KB | 2.11× | 4.6 ms | 12.3 ms | 16.9 ms | 10.133 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 257.6 KB | 1.0× | 6.1 ms | 22.2 ms | 28.3 ms | 11.884 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 2.5 MB | 1.0× | 61.2 ms | 228.1 ms | 289.3 ms | 11.565 | 14.3 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.11× | 45.9 ms | 128.7 ms | 174.5 ms | 9.716 | 10.7 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.5 MB | 1.0× | 61.2 ms | 228.9 ms | 290.1 ms | 11.523 | 14.1 MB | 0 | ✓ yes |
frames
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 288.9 KB | 1.0× | 6.5 ms | 13.3 ms | 19.8 ms | 22.223 | 1.3 MB | 4.4e-16 | ✗ no |
| 1,000 | compas_pb | 137.7 KB | 2.098× | 4.3 ms | 11.2 ms | 15.4 ms | 12.598 | 882.6 KB | 4.4e-16 | ✗ no |
| 1,000 | json@py3 | 288.9 KB | 1.0× | 6.5 ms | 13.3 ms | 19.8 ms | 22.302 | 1.3 MB | 4.4e-16 | ✗ no |
| 10,000 | json | 2.8 MB | 1.0× | 65.7 ms | 135.4 ms | 201.1 ms | 21.85 | 12.5 MB | 5.6e-16 | ✗ no |
| 10,000 | compas_pb | 1.3 MB | 2.099× | 42.5 ms | 115.0 ms | 157.6 ms | 12.256 | 8.6 MB | 5.6e-16 | ✗ no |
| 10,000 | json@py3 | 2.8 MB | 1.0× | 66.5 ms | 138.0 ms | 204.5 ms | 21.444 | 12.5 MB | 5.6e-16 | ✗ no |
graph
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 74.9 KB | 1.0× | 1.5 ms | 15.0 ms | 16.4 ms | 5.12 | 1.7 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 36.3 KB | 2.064× | 1.4 ms | 2.1 ms | 3.5 ms | 17.494 | 1.0 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 74.9 KB | 1.0× | 1.5 ms | 15.2 ms | 16.6 ms | 5.064 | 1.8 MB | 0 | ✓ yes |
| 10,000 | json | 775.1 KB | 1.0× | 15.0 ms | 168.0 ms | 183.0 ms | 4.725 | 17.0 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 360.2 KB | 2.152× | 13.4 ms | 22.3 ms | 35.8 ms | 16.517 | 10.0 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 775.1 KB | 1.0× | 15.3 ms | 176.9 ms | 192.2 ms | 4.487 | 17.0 MB | 0 | ✓ yes |
hyperbolas
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 259.5 KB | 1.0× | 5.9 ms | 22.2 ms | 28.1 ms | 11.97 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 124.0 KB | 2.092× | 4.5 ms | 14.5 ms | 19.0 ms | 8.782 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 270.3 KB | 0.96× | 6.4 ms | 22.8 ms | 29.2 ms | 12.132 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.5 MB | 1.0× | 59.6 ms | 229.2 ms | 288.8 ms | 11.598 | 14.3 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.093× | 46.3 ms | 127.3 ms | 173.5 ms | 9.979 | 10.7 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.6 MB | 0.96× | 63.9 ms | 235.5 ms | 299.4 ms | 11.752 | 14.4 MB | 0 | ✓ yes |
lines
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 213.0 KB | 1.0× | 6.0 ms | 7.2 ms | 13.3 ms | 30.238 | 998.1 KB | 0 | ✓ yes |
| 1,000 | compas_pb | 106.5 KB | 2.001× | 4.7 ms | 5.4 ms | 10.1 ms | 20.151 | 663.3 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 213.0 KB | 1.0× | 6.2 ms | 7.5 ms | 13.7 ms | 28.905 | 973.4 KB | 0 | ✓ yes |
| 10,000 | json | 2.1 MB | 1.0× | 60.5 ms | 72.4 ms | 132.9 ms | 30.111 | 9.6 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.0 MB | 2.001× | 48.0 ms | 56.7 ms | 104.7 ms | 19.22 | 6.5 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.1 MB | 1.0× | 61.5 ms | 76.6 ms | 138.1 ms | 28.46 | 9.4 MB | 0 | ✓ yes |
mesh
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 80.2 KB | 1.0× | 1.3 ms | 3.3 ms | 4.6 ms | 24.635 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 32.1 KB | 2.496× | 0.8 ms | 2.9 ms | 3.7 ms | 11.464 | 816.9 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 80.2 KB | 1.0× | 1.3 ms | 3.5 ms | 4.8 ms | 23.535 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 864.1 KB | 1.0× | 13.0 ms | 36.5 ms | 49.5 ms | 24.254 | 13.9 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 320.3 KB | 2.698× | 8.3 ms | 29.3 ms | 37.6 ms | 11.204 | 7.9 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 864.1 KB | 1.0× | 12.9 ms | 36.9 ms | 49.8 ms | 23.963 | 13.9 MB | 0 | ✓ yes |
mesh_attrs
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 109.5 KB | 1.0× | 1.7 ms | 3.6 ms | 5.3 ms | 30.715 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 40.2 KB | 2.726× | 0.9 ms | 3.0 ms | 3.9 ms | 13.859 | 896.7 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 109.5 KB | 1.0× | 1.7 ms | 3.7 ms | 5.4 ms | 30.534 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 1.1 MB | 1.0× | 16.8 ms | 39.1 ms | 55.9 ms | 30.113 | 14.4 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 398.5 KB | 2.886× | 9.7 ms | 31.2 ms | 40.9 ms | 13.085 | 8.6 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.1 MB | 1.0× | 17.2 ms | 39.7 ms | 56.9 ms | 29.667 | 14.4 MB | 0 | ✓ yes |
parabolas
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 232.9 KB | 1.0× | 7.0 ms | 22.1 ms | 29.2 ms | 10.77 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 114.3 KB | 2.039× | 4.5 ms | 12.0 ms | 16.5 ms | 9.736 | 1.0 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 232.9 KB | 1.0× | 5.8 ms | 22.2 ms | 28.0 ms | 10.728 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 2.3 MB | 1.0× | 56.8 ms | 227.5 ms | 284.3 ms | 10.483 | 13.6 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.1 MB | 2.039× | 44.7 ms | 124.5 ms | 169.2 ms | 9.399 | 10.3 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.3 MB | 1.0× | 58.3 ms | 227.2 ms | 285.5 ms | 10.497 | 13.4 MB | 0 | ✓ yes |
planes
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 219.9 KB | 1.0× | 4.9 ms | 6.9 ms | 11.7 ms | 32.736 | 964.2 KB | 2.2e-16 | ✗ no |
| 1,000 | compas_pb | 107.4 KB | 2.046× | 3.6 ms | 5.1 ms | 8.7 ms | 21.43 | 616.4 KB | 2.2e-16 | ✗ no |
| 1,000 | json@py3 | 219.9 KB | 1.0× | 5.0 ms | 6.9 ms | 11.9 ms | 32.565 | 951.5 KB | 2.2e-16 | ✗ no |
| 10,000 | json | 2.1 MB | 1.0× | 48.5 ms | 71.8 ms | 120.3 ms | 31.375 | 9.2 MB | 2.2e-16 | ✗ no |
| 10,000 | compas_pb | 1.0 MB | 2.047× | 36.2 ms | 53.6 ms | 89.8 ms | 20.532 | 6.0 MB | 2.2e-16 | ✗ no |
| 10,000 | json@py3 | 2.1 MB | 1.0× | 49.9 ms | 70.8 ms | 120.7 ms | 31.785 | 9.2 MB | 2.2e-16 | ✗ no |
pointcloud
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 10,000 | json | 567.0 KB | 1.0× | 13.1 ms | 11.5 ms | 24.7 ms | 50.345 | 3.8 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 234.4 KB | 2.419× | 2.2 ms | 7.9 ms | 10.1 ms | 30.438 | 3.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 567.0 KB | 1.0× | 13.1 ms | 11.2 ms | 24.3 ms | 51.907 | 3.8 MB | 0 | ✓ yes |
| 100,000 | json | 5.5 MB | 1.0× | 134.3 ms | 130.8 ms | 265.1 ms | 44.381 | 37.6 MB | 0 | ✓ yes |
| 100,000 | compas_pb | 2.3 MB | 2.419× | 22.2 ms | 112.8 ms | 135.0 ms | 21.269 | 31.3 MB | 0 | ✓ yes |
| 100,000 | json@py3 | 5.5 MB | 1.0× | 131.7 ms | 130.5 ms | 262.2 ms | 44.485 | 37.6 MB | 0 | ✓ yes |
points
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 141.7 KB | 1.0× | 3.1 ms | 3.4 ms | 6.4 ms | 43.13 | 496.6 KB | 0 | ✓ yes |
| 1,000 | compas_pb | 77.2 KB | 1.836× | 2.7 ms | 2.2 ms | 4.8 ms | 36.585 | 233.5 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 141.7 KB | 1.0× | 3.1 ms | 3.4 ms | 6.5 ms | 42.767 | 502.3 KB | 0 | ✓ yes |
| 10,000 | json | 1.4 MB | 1.0× | 31.7 ms | 35.7 ms | 67.4 ms | 40.653 | 4.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 771.5 KB | 1.836× | 27.0 ms | 22.2 ms | 49.2 ms | 35.616 | 2.3 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.4 MB | 1.0× | 32.0 ms | 35.2 ms | 67.2 ms | 41.151 | 4.7 MB | 0 | ✓ yes |
polygons
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 439.6 KB | 1.0× | 10.1 ms | 17.2 ms | 27.3 ms | 26.233 | 2.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 199.2 KB | 2.206× | 4.9 ms | 12.2 ms | 17.1 ms | 16.707 | 1.7 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 439.6 KB | 1.0× | 10.4 ms | 19.0 ms | 29.4 ms | 23.661 | 2.3 MB | 0 | ✓ yes |
| 10,000 | json | 4.3 MB | 1.0× | 103.7 ms | 180.7 ms | 284.4 ms | 24.921 | 22.4 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.9 MB | 2.207× | 48.3 ms | 129.3 ms | 177.6 ms | 15.782 | 17.0 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 4.3 MB | 1.0× | 108.3 ms | 197.6 ms | 305.9 ms | 22.788 | 22.4 MB | 0 | ✓ yes |
polyhedrons
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 372.3 KB | 1.0× | 7.6 ms | 6.9 ms | 14.5 ms | 54.899 | 1.7 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 180.7 KB | 2.06× | 6.1 ms | 6.5 ms | 12.6 ms | 28.631 | 1.2 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 372.3 KB | 1.0× | 7.7 ms | 7.0 ms | 14.7 ms | 54.584 | 1.7 MB | 0 | ✓ yes |
| 10,000 | json | 3.6 MB | 1.0× | 76.2 ms | 88.9 ms | 165.2 ms | 42.863 | 17.3 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 2.061× | 59.8 ms | 67.3 ms | 127.1 ms | 27.492 | 12.3 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 3.6 MB | 1.0× | 75.4 ms | 76.1 ms | 151.4 ms | 50.119 | 17.3 MB | 0 | ✓ yes |
polylines
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 554.0 KB | 1.0× | 14.1 ms | 13.4 ms | 27.5 ms | 42.364 | 2.7 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 247.1 KB | 2.242× | 5.4 ms | 8.6 ms | 14.0 ms | 29.368 | 2.0 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 554.0 KB | 1.0× | 13.4 ms | 13.3 ms | 26.6 ms | 42.772 | 2.7 MB | 0 | ✓ yes |
| 10,000 | json | 5.4 MB | 1.0× | 129.5 ms | 151.0 ms | 280.5 ms | 37.571 | 26.9 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 2.4 MB | 2.243× | 56.4 ms | 87.3 ms | 143.7 ms | 28.987 | 20.4 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 5.4 MB | 1.0× | 131.2 ms | 142.8 ms | 274.0 ms | 39.722 | 26.5 MB | 0 | ✓ yes |
projections
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 188.1 KB | 1.0× | 4.0 ms | 4.4 ms | 8.4 ms | 43.709 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 186.5 KB | 1.009× | 3.6 ms | 3.5 ms | 7.1 ms | 54.314 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 188.1 KB | 1.0× | 4.0 ms | 4.2 ms | 8.3 ms | 45.621 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 1.8 MB | 1.0× | 39.1 ms | 45.3 ms | 84.4 ms | 42.564 | 11.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 1.009× | 37.3 ms | 36.8 ms | 74.1 ms | 51.934 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.8 MB | 1.0× | 40.8 ms | 44.2 ms | 85.0 ms | 43.557 | 11.8 MB | 0 | ✓ yes |
quaternions
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 185.4 KB | 1.0× | 3.5 ms | 4.0 ms | 7.5 ms | 47.943 | 584.7 KB | 0 | ✓ yes |
| 1,000 | compas_pb | 90.8 KB | 2.042× | 2.7 ms | 2.3 ms | 5.0 ms | 40.667 | 272.6 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 185.4 KB | 1.0× | 3.5 ms | 3.9 ms | 7.4 ms | 49.09 | 585.1 KB | 0 | ✓ yes |
| 10,000 | json | 1.8 MB | 1.0× | 34.9 ms | 41.1 ms | 75.9 ms | 46.255 | 5.5 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 908.2 KB | 2.043× | 28.4 ms | 24.3 ms | 52.7 ms | 38.344 | 2.7 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.8 MB | 1.0× | 34.9 ms | 40.5 ms | 75.4 ms | 46.874 | 5.5 MB | 0 | ✓ yes |
reflections
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 189.3 KB | 1.0× | 4.0 ms | 4.2 ms | 8.2 ms | 46.134 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 186.5 KB | 1.015× | 3.7 ms | 3.5 ms | 7.2 ms | 53.963 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 189.3 KB | 1.0× | 4.1 ms | 4.4 ms | 8.4 ms | 44.477 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 1.8 MB | 1.0× | 39.5 ms | 44.8 ms | 84.4 ms | 43.242 | 11.8 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 1.015× | 37.0 ms | 37.2 ms | 74.2 ms | 51.357 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.8 MB | 1.0× | 40.5 ms | 45.2 ms | 85.7 ms | 42.891 | 11.8 MB | 0 | ✓ yes |
rotations
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 233.2 KB | 1.0× | 5.0 ms | 5.0 ms | 10.0 ms | 47.576 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 184.6 KB | 1.264× | 3.8 ms | 3.5 ms | 7.2 ms | 54.514 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 233.2 KB | 1.0× | 4.9 ms | 4.7 ms | 9.5 ms | 51.193 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 2.3 MB | 1.0× | 50.3 ms | 53.6 ms | 103.9 ms | 44.578 | 12.2 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 1.264× | 38.4 ms | 36.4 ms | 74.8 ms | 51.917 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.3 MB | 1.0× | 48.0 ms | 49.4 ms | 97.4 ms | 48.319 | 12.2 MB | 0 | ✓ yes |
scales
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 211.0 KB | 1.0× | 4.4 ms | 4.5 ms | 8.9 ms | 48.05 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 181.7 KB | 1.162× | 3.5 ms | 3.4 ms | 7.0 ms | 53.931 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 211.0 KB | 1.0× | 4.6 ms | 4.5 ms | 9.1 ms | 47.915 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 2.1 MB | 1.0× | 45.5 ms | 47.9 ms | 93.3 ms | 45.102 | 12.0 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 1.161× | 37.4 ms | 36.9 ms | 74.3 ms | 50.386 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.1 MB | 1.0× | 44.4 ms | 48.4 ms | 92.8 ms | 44.621 | 12.0 MB | 0 | ✓ yes |
shears
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 185.7 KB | 1.0× | 4.0 ms | 4.2 ms | 8.2 ms | 45.569 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 181.7 KB | 1.022× | 3.8 ms | 3.5 ms | 7.3 ms | 52.955 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 185.7 KB | 1.0× | 4.0 ms | 4.1 ms | 8.2 ms | 45.905 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 1.8 MB | 1.0× | 39.7 ms | 45.6 ms | 85.3 ms | 41.727 | 11.7 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.8 MB | 1.023× | 37.9 ms | 36.6 ms | 74.5 ms | 50.858 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.8 MB | 1.0× | 39.8 ms | 44.3 ms | 84.1 ms | 42.923 | 11.7 MB | 0 | ✓ yes |
spheres
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 231.7 KB | 1.0× | 5.6 ms | 21.6 ms | 27.2 ms | 10.988 | 1.4 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 112.3 KB | 2.063× | 4.4 ms | 11.9 ms | 16.3 ms | 9.702 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 231.7 KB | 1.0× | 5.8 ms | 22.1 ms | 27.9 ms | 10.749 | 1.4 MB | 0 | ✓ yes |
| 10,000 | json | 2.3 MB | 1.0× | 57.3 ms | 222.7 ms | 279.9 ms | 10.654 | 14.0 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.1 MB | 2.063× | 45.1 ms | 122.8 ms | 167.9 ms | 9.365 | 10.7 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.3 MB | 1.0× | 59.3 ms | 225.3 ms | 284.6 ms | 10.531 | 14.0 MB | 0 | ✓ yes |
toruses
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 267.5 KB | 1.0× | 6.1 ms | 22.0 ms | 28.0 ms | 12.456 | 1.5 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 120.1 KB | 2.227× | 4.5 ms | 12.1 ms | 16.6 ms | 10.159 | 1.1 MB | 0 | ✓ yes |
| 1,000 | json@py3 | 267.5 KB | 1.0× | 6.3 ms | 22.6 ms | 28.9 ms | 12.111 | 1.5 MB | 0 | ✓ yes |
| 10,000 | json | 2.6 MB | 1.0× | 62.6 ms | 228.0 ms | 290.6 ms | 12.013 | 14.8 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.2 MB | 2.227× | 47.6 ms | 126.4 ms | 174.0 ms | 9.732 | 11.1 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.6 MB | 1.0× | 62.4 ms | 231.7 ms | 294.2 ms | 11.82 | 14.8 MB | 0 | ✓ yes |
transformations
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 219.8 KB | 1.0× | 4.7 ms | 4.5 ms | 9.2 ms | 49.946 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 190.4 KB | 1.154× | 3.5 ms | 3.4 ms | 7.0 ms | 56.978 | 901.2 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 219.8 KB | 1.0× | 4.7 ms | 4.4 ms | 9.1 ms | 50.606 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 2.1 MB | 1.0× | 45.7 ms | 47.8 ms | 93.5 ms | 47.116 | 12.1 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 1.9 MB | 1.154× | 37.8 ms | 36.4 ms | 74.2 ms | 53.623 | 8.8 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.1 MB | 1.0× | 46.3 ms | 48.7 ms | 95.0 ms | 46.207 | 12.1 MB | 0 | ✓ yes |
translations
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 216.9 KB | 1.0× | 4.5 ms | 4.6 ms | 9.1 ms | 48.148 | 1.2 MB | 0 | ✓ yes |
| 1,000 | compas_pb | 85.0 KB | 2.552× | 3.1 ms | 3.2 ms | 6.3 ms | 27.603 | 596.4 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 216.9 KB | 1.0× | 4.6 ms | 4.6 ms | 9.2 ms | 48.021 | 1.2 MB | 0 | ✓ yes |
| 10,000 | json | 2.1 MB | 1.0× | 46.1 ms | 49.9 ms | 95.9 ms | 44.521 | 12.0 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 849.6 KB | 2.552× | 32.6 ms | 33.5 ms | 66.1 ms | 25.974 | 5.9 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 2.1 MB | 1.0× | 46.2 ms | 51.0 ms | 97.2 ms | 43.569 | 12.0 MB | 0 | ✓ yes |
vectors
Round-trip time
Wire size
| size | format | wire size | vs JSON | dump | load | round-trip | load MB/s | peak mem | max err | lossless |
|---|
| 1,000 | json | 142.6 KB | 1.0× | 3.1 ms | 3.5 ms | 6.7 ms | 41.52 | 513.0 KB | 0 | ✓ yes |
| 1,000 | compas_pb | 78.1 KB | 1.826× | 2.6 ms | 2.2 ms | 4.8 ms | 36.427 | 249.1 KB | 0 | ✓ yes |
| 1,000 | json@py3 | 142.6 KB | 1.0× | 3.2 ms | 3.4 ms | 6.6 ms | 42.918 | 519.1 KB | 0 | ✓ yes |
| 10,000 | json | 1.4 MB | 1.0× | 31.4 ms | 38.1 ms | 69.5 ms | 38.344 | 4.9 MB | 0 | ✓ yes |
| 10,000 | compas_pb | 781.3 KB | 1.826× | 27.3 ms | 23.3 ms | 50.7 ms | 34.273 | 2.4 MB | 0 | ✓ yes |
| 10,000 | json@py3 | 1.4 MB | 1.0× | 31.9 ms | 35.7 ms | 67.6 ms | 40.908 | 4.9 MB | 0 | ✓ yes |