- The vision for the future is to add some type of Codable protocol to make it easier for users to write flexbuffers
The following Repository compares the benchmarks between the native swift JSON encoder and decode compared to the FlexBuffers implementation. The vision of flexbuffers API within swift is to be something similar to this:
struct Position: FlexBufferCodable { let x, y, z: Double }
let a = Position(x: 3.0, y: 4.0, z: 5.0)
let buffer: ByteBuffer = FlexBufferCoder().encode(a)
let pos = FlexBufferCoder().decode(buffer, as: Position.self)Within the resources folder you would find the binaries and jsons
| Keys | Canada | |
|---|---|---|
| JSON | 617K | 2.1M |
| FlatBuffer | 111K | 878K |
| FlexBuffer shared key | 136K | 1.3M |
| FlexBuffer shared key and string | 93K | 1.3M |
- Canada test is using a typedvector (swift native arrays) to achive that performance
swift package benchmark --grouping metric --time-units nanoseconds
Host 'Mustiis-MacBook-Pro.local' with 12 'arm64' processors with 24 GB memory, running:
Darwin Kernel Version 25.1.0: Mon Oct 20 19:34:05 PDT 2025; root:xnu-12377.41.6~2/RELEASE_ARM64_T6041
Throughput (# / s)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ
β Test β p0 β p25 β p50 β p75 β p90 β p99 β p100 β Samples β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββ‘
β Benchmarks:canada-decode-Flatbuffer (M) β 353 β 334 β 329 β 304 β 296 β 282 β 0 β 655761 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-FlatbufferMutable (M) β 600 β 546 β 534 β 500 β 480 β 462 β 23 β 932607 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-JSON (K) β 67 β 65 β 65 β 64 β 63 β 63 β 63 β 194 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-manual-FlexbufferSharedKeys (M) β 632 β 600 β 572 β 534 β 522 β 500 β 16 β 973746 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-manual-FlexbufferSharedKeysAndStrings (M) β 632 β 600 β 572 β 534 β 522 β 511 β 46 β 968817 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-Flatbuffer (K) β 4237 β 4067 β 3931 β 3825 β 3765 β 3671 β 2771 β 11745 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-JSON (K) β 36 β 35 β 35 β 34 β 34 β 34 β 33 β 104 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-manual-FlexbufferSharedKeys (K) β 341 β 312 β 308 β 306 β 302 β 292 β 275 β 926 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-manual-FlexbufferSharedKeysAndStrings (K) β 336 β 308 β 305 β 298 β 291 β 281 β 257 β 909 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-Flatbuffer (M) β 3003 β 2398 β 2185 β 2179 β 2001 β 1849 β 40 β 1668456 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-JSON (K) β 672 β 628 β 620 β 615 β 609 β 572 β 545 β 1861 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-manual-FlexbufferSharedKeys (M) β 2183 β 1716 β 1601 β 1601 β 1502 β 1413 β 49 β 1511991 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-manual-FlexbufferSharedKeysAndStrings (M) β 2183 β 1845 β 1716 β 1601 β 1601 β 1500 β 50 β 1572550 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-Flatbuffer (M) β 18 β 17 β 16 β 16 β 16 β 15 β 10 β 47233 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-JSON (K) β 1490 β 1415 β 1388 β 1362 β 1341 β 1317 β 1187 β 4155 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-manual-FlexbufferSharedKeys (K) β 3317 β 3151 β 3103 β 3039 β 2987 β 2911 β 2511 β 9259 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-manual-FlexbufferSharedKeysAndStrings (K) β 1612 β 1528 β 1507 β 1493 β 1478 β 1446 β 1254 β 4525 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ
Time (total CPU)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ€ββββββββββββ
β Test β p0 β p25 β p50 β p75 β p90 β p99 β p100 β Samples β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββͺββββββββββββ‘
β Benchmarks:canada-decode-Flatbuffer (ns) * β 3 β 3 β 4 β 4 β 4 β 4 β 34 β 655761 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-FlatbufferMutable (ns) * β 2 β 2 β 2 β 3 β 3 β 3 β 61 β 932607 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-JSON (ns) * β 14833 β 15409 β 15483 β 15589 β 15753 β 15924 β 15924 β 194 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-manual-FlexbufferSharedKeys (ns) * β 2 β 2 β 2 β 2 β 2 β 3 β 48 β 973746 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-decode-manual-FlexbufferSharedKeysAndStrings (ns) * β 2 β 2 β 2 β 2 β 2 β 3 β 20 β 968817 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-Flatbuffer (ns) * β 236 β 247 β 255 β 262 β 266 β 273 β 346 β 11745 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-JSON (ns) * β 28018 β 28656 β 28836 β 29131 β 29344 β 29524 β 30167 β 104 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-manual-FlexbufferSharedKeys (ns) * β 2932 β 3207 β 3244 β 3271 β 3318 β 3430 β 3634 β 926 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:canada-encode-manual-FlexbufferSharedKeysAndStrings (ns) * β 2977 β 3248 β 3279 β 3363 β 3432 β 3541 β 3867 β 909 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-Flatbuffer (ns) * β 1 β 1 β 1 β 1 β 1 β 1 β 18 β 1668456 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-JSON (ns) * β 1488 β 1593 β 1615 β 1628 β 1642 β 1748 β 1835 β 1861 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-manual-FlexbufferSharedKeys (ns) * β 1 β 1 β 1 β 1 β 1 β 1 β 21 β 1511991 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-decode-manual-FlexbufferSharedKeysAndStrings (ns) * β 1 β 1 β 1 β 1 β 1 β 1 β 26 β 1572550 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-Flatbuffer (ns) * β 56 β 60 β 64 β 64 β 65 β 69 β 98 β 47233 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-JSON (ns) * β 672 β 708 β 721 β 735 β 746 β 759 β 827 β 4155 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-manual-FlexbufferSharedKeys (ns) * β 302 β 318 β 323 β 330 β 336 β 344 β 399 β 9259 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββΌββββββββββββ€
β Benchmarks:twitter-encode-manual-FlexbufferSharedKeysAndStrings (ns) * β 621 β 655 β 664 β 671 β 677 β 692 β 783 β 4525 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ§ββββββββββββ