A decoder-optimized binary serializer for read-heavy PHP cache workloads, measured against igbinary (the reference), PHP's native serialize(), and msgpack across cache-shaped payloads. Lower is better on every metric. igbinary is the baseline; each percentage is that column's delta vs. igbinary: green beats igbinary, red loses to it.
Bars are normalized per row to the largest value (longer = slower / bigger).best in rowphpser column
| shape | phpser | igbinary * | serialize | msgpack |
|---|---|---|---|---|
| rowset_100 |
2,287
-50%
|
4,570
|
21,046
+361%
|
9,593
+110%
|
| rowset_1000 |
22,988
-52%
|
47,459
|
214,949
+353%
|
98,509
+108%
|
| rowset_distinct_1000 |
25,993
-56%
|
59,447
|
214,949
+262%
|
98,509
+66%
|
| packed_1k |
7
-100%
|
5,495
|
11,789
+115%
|
2,619
-52%
|
| packed_10k |
7
-100%
|
59,495
|
137,790
+132%
|
29,619
-50%
|
| packed_rand_10k |
29,826
-62%
|
78,389
|
157,762
+101%
|
48,637
-38%
|
| deep_50 |
425
+1%
|
419
|
1,512
+261%
|
457
+9%
|
| dto_100 |
5,186
-27%
|
7,083
|
28,190
+298%
|
14,909
+110%
|
| dto_1000 |
53,787
-27%
|
73,372
|
285,891
+290%
|
152,725
+108%
|
| dto_mixed |
14,214
-34%
|
21,644
|
85,395
+295%
|
46,433
+115%
|
| shape | phpser | igbinary * | serialize | msgpack |
|---|---|---|---|---|
| rowset_100 |
9.9k ±24
-45%
|
18.0k ±32
|
64.2k ±900
+256%
|
39.6k ±37
+120%
|
| rowset_1000 |
99.6k ±177
-61%
|
254.6k ±372
|
701.2k ±1.2k
+175%
|
403.3k ±292
+58%
|
| rowset_distinct_1000 |
120.6k ±219
-63%
|
327.9k ±505
|
702.4k ±5.8k
+114%
|
410.9k ±494
+25%
|
| packed_1k |
1.5k ±9
-84%
|
9.6k ±11
|
23.4k ±54
+144%
|
12.6k ±50
+32%
|
| packed_10k |
14.3k ±22
-85%
|
93.1k ±34
|
245.3k ±83
+163%
|
127.8k ±180
+37%
|
| packed_rand_10k |
71.0k ±46
-32%
|
104.5k ±39
|
293.5k ±125
+181%
|
133.7k ±98
+28%
|
| deep_50 |
1.9k ±12
-28%
|
2.7k ±20
|
3.2k ±9
+17%
|
6.6k ±16
+144%
|
| dto_100 |
22.7k ±67
-19%
|
28.2k ±84
|
37.9k ±38
+34%
|
47.6k ±44
+69%
|
| dto_1000 |
249.9k ±668
-20%
|
311.6k ±895
|
387.8k ±543
+24%
|
506.8k ±1.1k
+63%
|
| dto_mixed |
82.9k ±187
-23%
|
107.5k ±635
|
213.3k ±671
+99%
|
164.9k ±293
+53%
|
| shape | phpser | igbinary * | serialize | msgpack |
|---|---|---|---|---|
| rowset_100 |
9.3k ±15
-56%
|
21.1k ±47
|
68.6k ±95
+225%
|
67.3k ±135
+219%
|
| rowset_1000 |
100.4k ±123
-52%
|
209.2k ±217
|
721.1k ±1.1k
+245%
|
696.8k ±7.8k
+233%
|
| rowset_distinct_1000 |
142.1k ±301
-52%
|
294.3k ±471
|
743.5k ±1.6k
+153%
|
728.2k ±6.2k
+147%
|
| packed_1k |
1.4k ±4
-91%
|
15.7k ±15
|
37.0k ±71
+135%
|
17.8k ±17
+13%
|
| packed_10k |
12.6k ±15
-92%
|
154.0k ±421
|
398.5k ±1.9k
+159%
|
178.3k ±118
+16%
|
| packed_rand_10k |
39.7k ±26
-77%
|
173.6k ±97
|
434.6k ±1.4k
+150%
|
185.4k ±184
+7%
|
| deep_50 |
2.7k ±17
-24%
|
3.5k ±20
|
6.0k ±11
+71%
|
7.4k ±8
+108%
|
| dto_100 |
21.5k ±30
-61%
|
54.9k ±111
|
126.9k ±294
+131%
|
156.3k ±411
+184%
|
| dto_1000 |
215.0k ±154
-65%
|
606.7k ±1.4k
|
1600.4k ±2.8k
+164%
|
1641.6k ±1.3k
+171%
|
| dto_mixed |
81.4k ±96
-64%
|
227.1k ±334
|
527.1k ±1.4k
+132%
|
566.0k ±1.1k
+149%
|