Skip to content

Conversation

@tigrannajaryan
Copy link
Collaborator

DRAFT. Don't review.

This adds zstd sizes to Profile and JSONL examples:
```
File --> Size in bytes         | JSON   | Protobuf       | STEF           | JSONZ  | ProtoZ | stefz
currencies_historical          |   4197 |   4393 (1.05x) |   1082 (0.26x) |    756 |   1105 |    782
macosx_releases                |   2449 |   2604 (1.06x) |    935 (0.38x) |    523 |    766 |    596
programming_languages_keywords |  10681 |  11912 (1.12x) |   8225 (0.77x) |   3746 |   5074 |   4053

File                 | pprof  | stef   | pprofz | stefz
deser_stef.prof      |  83343 |  83768 |  33326 |  29424 (1.005x/0.883x)
otelcol_otlp.prof    |  31864 |  38859 |  13054 |   9215 (1.220x/0.706x)
wsstreamasync.prof   |  92996 | 128295 |  29093 |  28150 (1.380x/0.968x)
```

Also makes zstd CPU times visible as a stack bar chart in benchmark.html.
@github-actions
Copy link

github-actions bot commented Sep 12, 2025

Benchmark Result

Benchmark diff with base branch
goos: linux
goarch: amd64
pkg: github.com/splunk/stef/benchmarks
cpu: AMD EPYC 7763 64-Core Processor                
                                                 │ bench-main.txt │             bench-new.txt             │
                                                 │     sec/op     │    sec/op     vs base                 │
SerializeNative/STEF/none-4                          13.55m ±  4%
SerializeNative/STEFU/none-4                         35.81m ±  4%
DeserializeNative/STEF/none-4                        2.751m ±  4%
DeserializeNative/STEFU/none-4                       8.612m ±  0%
SerializeFromPdata/STEF/none-4                       228.1m ±  2%
SerializeFromPdata/STEFU/none-4                      35.42m ±  4%
DeserializeToPdata/STEF/none-4                       43.17m ±  3%
DeserializeToPdata/STEFU/none-4                      63.21m ±  1%
STEFReaderRead-4                                     2.742m ±  1%   2.648m ±  1%   -3.44% (p=0.002 n=6)
STEFSerializeMultipart/astronomy-otelmetrics-4        4.106 ±  5%    3.916 ±  7%   -4.64% (p=0.015 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4     78.71m ± 19%   77.77m ± 16%        ~ (p=1.000 n=6)
ReadSTEF-4                                           2.789m ±  5%   2.552m ±  1%   -8.48% (p=0.002 n=6)
ReadSTEFZ-4                                          4.851m ±  2%   3.499m ±  2%  -27.86% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                 8.940m ±  1%   8.302m ±  0%   -7.13% (p=0.002 n=6)
SerializeNative/STEF/serialize-4                                    13.79m ±  2%
SerializeNative/STEF/zstd-4                                         1.561m ±  2%
SerializeNative/STEFU/serialize-4                                   34.99m ±  1%
SerializeNative/STEFU/zstd-4                                        5.959m ±  1%
DeserializeNative/STEF/deser-4                                      2.621m ±  1%
DeserializeNative/STEF/zstd-4                                       253.7µ ±  1%
DeserializeNative/STEFU/deser-4                                     8.280m ±  1%
DeserializeNative/STEFU/zstd-4                                      901.5µ ±  0%
SerializeFromPdata/STEF/serialize-4                                 204.5m ±  3%
SerializeFromPdata/STEF/zstd-4                                      1.593m ±  2%
SerializeFromPdata/STEFU/serialize-4                                35.87m ±  1%
SerializeFromPdata/STEFU/zstd-4                                     5.954m ±  1%
DeserializeToPdata/STEF/deserialize-4                               37.41m ±  1%
DeserializeToPdata/STEF/zstd-4                                      252.5µ ±  1%
DeserializeToPdata/STEFU/deserialize-4                              55.83m ±  4%
DeserializeToPdata/STEFU/zstd-4                                     897.5µ ±  1%
geomean                                              24.44m         7.813m         -9.27%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                                                 │ bench-main.txt │             bench-new.txt             │
                                                 │   sec/point    │  sec/point    vs base                 │
SerializeNative/STEF/none-4                          202.7n ±  4%
SerializeNative/STEFU/none-4                         535.6n ±  4%
DeserializeNative/STEF/none-4                        41.15n ±  4%
DeserializeNative/STEFU/none-4                       128.8n ±  0%
SerializeFromPdata/STEF/none-4                       3.412µ ±  2%
SerializeFromPdata/STEFU/none-4                      529.8n ±  4%
DeserializeToPdata/STEF/none-4                       645.7n ±  3%
DeserializeToPdata/STEFU/none-4                      945.4n ±  1%
STEFReaderRead-4                                     41.01n ±  1%   39.59n ±  1%   -3.44% (p=0.002 n=6)
STEFSerializeMultipart/astronomy-otelmetrics-4       5.219µ ±  5%   4.977µ ±  7%   -4.64% (p=0.015 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4    100.02n ± 19%   98.84n ± 16%        ~ (p=1.000 n=6)
ReadSTEF-4                                           41.73n ±  5%   38.20n ±  1%   -8.48% (p=0.002 n=6)
ReadSTEFZ-4                                          72.61n ±  2%   52.38n ±  2%  -27.86% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                 133.8n ±  1%   124.3n ±  0%   -7.14% (p=0.002 n=6)
SerializeNative/STEF/serialize-4                                    206.3n ±  2%
SerializeNative/STEF/zstd-4                                         23.37n ±  2%
SerializeNative/STEFU/serialize-4                                   523.4n ±  1%
SerializeNative/STEFU/zstd-4                                        89.19n ±  1%
DeserializeNative/STEF/deser-4                                      39.19n ±  1%
DeserializeNative/STEF/zstd-4                                       3.797n ±  1%
DeserializeNative/STEFU/deser-4                                     123.8n ±  1%
DeserializeNative/STEFU/zstd-4                                      13.49n ±  0%
SerializeFromPdata/STEF/serialize-4                                 3.058µ ±  3%
SerializeFromPdata/STEF/zstd-4                                      23.84n ±  2%
SerializeFromPdata/STEFU/serialize-4                                536.4n ±  1%
SerializeFromPdata/STEFU/zstd-4                                     89.11n ±  1%
DeserializeToPdata/STEF/deserialize-4                               559.4n ±  1%
DeserializeToPdata/STEF/zstd-4                                      3.779n ±  1%
DeserializeToPdata/STEFU/deserialize-4                              835.0n ±  4%
DeserializeToPdata/STEFU/zstd-4                                     13.43n ±  1%
geomean                                              257.1n         93.42n         -9.27%               ¹
¹ benchmark set differs from baseline; geomeans may not be comparable

                                                 │ bench-main.txt │            bench-new.txt             │
                                                 │      B/op      │     B/op      vs base                │
SerializeNative/STEF/none-4                          3.566Mi ± 0%
SerializeNative/STEFU/none-4                         7.129Mi ± 0%
DeserializeNative/STEF/none-4                        911.5Ki ± 0%
DeserializeNative/STEFU/none-4                       1.564Mi ± 0%
SerializeFromPdata/STEF/none-4                       166.1Mi ± 0%
SerializeFromPdata/STEFU/none-4                      7.129Mi ± 0%
DeserializeToPdata/STEF/none-4                       29.88Mi ± 0%
DeserializeToPdata/STEFU/none-4                      36.63Mi ± 0%
STEFReaderRead-4                                     911.5Ki ± 0%   911.5Ki ± 0%       ~ (p=1.000 n=6) ¹
STEFSerializeMultipart/astronomy-otelmetrics-4       3.958Gi ± 0%   3.961Gi ± 0%       ~ (p=0.818 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4     20.73Mi ± 0%   20.73Mi ± 0%       ~ (p=0.307 n=6)
ReadSTEF-4                                           911.0Ki ± 0%   911.5Ki ± 0%  +0.05% (p=0.002 n=6)
ReadSTEFZ-4                                          10.19Mi ± 0%   10.19Mi ± 0%  -0.01% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                 13.61Mi ± 0%   13.61Mi ± 0%  -0.00% (p=0.002 n=6)
SerializeNative/STEF/serialize-4                                    3.572Mi ± 0%
SerializeNative/STEF/zstd-4                                         424.0Ki ± 0%
SerializeNative/STEFU/serialize-4                                   7.129Mi ± 0%
SerializeNative/STEFU/zstd-4                                        920.0Ki ± 0%
DeserializeNative/STEF/deser-4                                      911.5Ki ± 0%
DeserializeNative/STEF/zstd-4                                       424.0Ki ± 0%
DeserializeNative/STEFU/deser-4                                     1.564Mi ± 0%
DeserializeNative/STEFU/zstd-4                                      920.1Ki ± 0%
SerializeFromPdata/STEF/serialize-4                                 166.0Mi ± 0%
SerializeFromPdata/STEF/zstd-4                                      424.0Ki ± 0%
SerializeFromPdata/STEFU/serialize-4                                7.129Mi ± 0%
SerializeFromPdata/STEFU/zstd-4                                     920.0Ki ± 0%
DeserializeToPdata/STEF/deserialize-4                               29.88Mi ± 0%
DeserializeToPdata/STEF/zstd-4                                      424.1Ki ± 0%
DeserializeToPdata/STEFU/deserialize-4                              36.63Mi ± 0%
DeserializeToPdata/STEFU/zstd-4                                     920.1Ki ± 0%
geomean                                              11.08Mi        3.862Mi       +0.02%               ²
¹ all samples are equal
² benchmark set differs from baseline; geomeans may not be comparable

                                                 │ bench-main.txt │            bench-new.txt            │
                                                 │   allocs/op    │  allocs/op   vs base                │
SerializeNative/STEF/none-4                           2.910k ± 1%
SerializeNative/STEFU/none-4                          1.080k ± 0%
DeserializeNative/STEF/none-4                          669.0 ± 0%
DeserializeNative/STEFU/none-4                         729.0 ± 0%
SerializeFromPdata/STEF/none-4                        256.5k ± 0%
SerializeFromPdata/STEFU/none-4                       1.081k ± 0%
DeserializeToPdata/STEF/none-4                        622.8k ± 0%
DeserializeToPdata/STEFU/none-4                       811.5k ± 0%
STEFReaderRead-4                                       669.0 ± 0%    669.0 ± 0%       ~ (p=1.000 n=6) ¹
STEFSerializeMultipart/astronomy-otelmetrics-4        14.44M ± 0%   14.44M ± 0%       ~ (p=0.554 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4      3.920k ± 0%   3.920k ± 0%       ~ (p=1.000 n=6)
ReadSTEF-4                                             669.0 ± 0%    669.0 ± 0%       ~ (p=1.000 n=6) ¹
ReadSTEFZ-4                                            702.0 ± 0%    698.0 ± 0%  -0.57% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                  1.681k ± 0%   1.676k ± 0%  -0.30% (p=0.002 n=6)
SerializeNative/STEF/serialize-4                                    2.921k ± 0%
SerializeNative/STEF/zstd-4                                          1.000 ± 0%
SerializeNative/STEFU/serialize-4                                   1.080k ± 0%
SerializeNative/STEFU/zstd-4                                         1.000 ± 0%
DeserializeNative/STEF/deser-4                                       669.0 ± 0%
DeserializeNative/STEF/zstd-4                                        1.000 ± 0%
DeserializeNative/STEFU/deser-4                                      729.0 ± 0%
DeserializeNative/STEFU/zstd-4                                       1.000 ± 0%
SerializeFromPdata/STEF/serialize-4                                 256.4k ± 0%
SerializeFromPdata/STEF/zstd-4                                       1.000 ± 0%
SerializeFromPdata/STEFU/serialize-4                                1.081k ± 0%
SerializeFromPdata/STEFU/zstd-4                                      1.000 ± 0%
DeserializeToPdata/STEF/deserialize-4                               622.8k ± 0%
DeserializeToPdata/STEF/zstd-4                                       1.000 ± 0%
DeserializeToPdata/STEFU/deserialize-4                              811.5k ± 0%
DeserializeToPdata/STEFU/zstd-4                                      1.000 ± 0%
geomean                                               8.219k         309.8       -0.14%               ²
¹ all samples are equal
² benchmark set differs from baseline; geomeans may not be comparable
Benchmark result
benchstat bench-new.txt
goos: linux
goarch: amd64
pkg: github.com/splunk/stef/benchmarks
cpu: AMD EPYC 7763 64-Core Processor                
                                                 │ bench-new.txt │
                                                 │    sec/op     │
SerializeNative/STEF/serialize-4                    13.79m ±  2%
SerializeNative/STEF/zstd-4                         1.561m ±  2%
SerializeNative/STEFU/serialize-4                   34.99m ±  1%
SerializeNative/STEFU/zstd-4                        5.959m ±  1%
DeserializeNative/STEF/deser-4                      2.621m ±  1%
DeserializeNative/STEF/zstd-4                       253.7µ ±  1%
DeserializeNative/STEFU/deser-4                     8.280m ±  1%
DeserializeNative/STEFU/zstd-4                      901.5µ ±  0%
SerializeFromPdata/STEF/serialize-4                 204.5m ±  3%
SerializeFromPdata/STEF/zstd-4                      1.593m ±  2%
SerializeFromPdata/STEFU/serialize-4                35.87m ±  1%
SerializeFromPdata/STEFU/zstd-4                     5.954m ±  1%
DeserializeToPdata/STEF/deserialize-4               37.41m ±  1%
DeserializeToPdata/STEF/zstd-4                      252.5µ ±  1%
DeserializeToPdata/STEFU/deserialize-4              55.83m ±  4%
DeserializeToPdata/STEFU/zstd-4                     897.5µ ±  1%
STEFReaderRead-4                                    2.648m ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4       3.916 ±  7%
STEFDeserializeMultipart/astronomy-otelmetrics-4    77.77m ± 16%
ReadSTEF-4                                          2.552m ±  1%
ReadSTEFZ-4                                         3.499m ±  2%
ReadSTEFZWriteSTEF-4                                8.302m ±  0%
geomean                                             7.813m

                                                 │ bench-new.txt │
                                                 │   sec/point   │
SerializeNative/STEF/serialize-4                    206.3n ±  2%
SerializeNative/STEF/zstd-4                         23.37n ±  2%
SerializeNative/STEFU/serialize-4                   523.4n ±  1%
SerializeNative/STEFU/zstd-4                        89.19n ±  1%
DeserializeNative/STEF/deser-4                      39.19n ±  1%
DeserializeNative/STEF/zstd-4                       3.797n ±  1%
DeserializeNative/STEFU/deser-4                     123.8n ±  1%
DeserializeNative/STEFU/zstd-4                      13.49n ±  0%
SerializeFromPdata/STEF/serialize-4                 3.058µ ±  3%
SerializeFromPdata/STEF/zstd-4                      23.84n ±  2%
SerializeFromPdata/STEFU/serialize-4                536.4n ±  1%
SerializeFromPdata/STEFU/zstd-4                     89.11n ±  1%
DeserializeToPdata/STEF/deserialize-4               559.4n ±  1%
DeserializeToPdata/STEF/zstd-4                      3.779n ±  1%
DeserializeToPdata/STEFU/deserialize-4              835.0n ±  4%
DeserializeToPdata/STEFU/zstd-4                     13.43n ±  1%
STEFReaderRead-4                                    39.59n ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4      4.977µ ±  7%
STEFDeserializeMultipart/astronomy-otelmetrics-4    98.84n ± 16%
ReadSTEF-4                                          38.20n ±  1%
ReadSTEFZ-4                                         52.38n ±  2%
ReadSTEFZWriteSTEF-4                                124.3n ±  0%
geomean                                             93.42n

                                                 │ bench-new.txt │
                                                 │     B/op      │
SerializeNative/STEF/serialize-4                    3.572Mi ± 0%
SerializeNative/STEF/zstd-4                         424.0Ki ± 0%
SerializeNative/STEFU/serialize-4                   7.129Mi ± 0%
SerializeNative/STEFU/zstd-4                        920.0Ki ± 0%
DeserializeNative/STEF/deser-4                      911.5Ki ± 0%
DeserializeNative/STEF/zstd-4                       424.0Ki ± 0%
DeserializeNative/STEFU/deser-4                     1.564Mi ± 0%
DeserializeNative/STEFU/zstd-4                      920.1Ki ± 0%
SerializeFromPdata/STEF/serialize-4                 166.0Mi ± 0%
SerializeFromPdata/STEF/zstd-4                      424.0Ki ± 0%
SerializeFromPdata/STEFU/serialize-4                7.129Mi ± 0%
SerializeFromPdata/STEFU/zstd-4                     920.0Ki ± 0%
DeserializeToPdata/STEF/deserialize-4               29.88Mi ± 0%
DeserializeToPdata/STEF/zstd-4                      424.1Ki ± 0%
DeserializeToPdata/STEFU/deserialize-4              36.63Mi ± 0%
DeserializeToPdata/STEFU/zstd-4                     920.1Ki ± 0%
STEFReaderRead-4                                    911.5Ki ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4      3.961Gi ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4    20.73Mi ± 0%
ReadSTEF-4                                          911.5Ki ± 0%
ReadSTEFZ-4                                         10.19Mi ± 0%
ReadSTEFZWriteSTEF-4                                13.61Mi ± 0%
geomean                                             3.862Mi

                                                 │ bench-new.txt │
                                                 │   allocs/op   │
SerializeNative/STEF/serialize-4                     2.921k ± 0%
SerializeNative/STEF/zstd-4                           1.000 ± 0%
SerializeNative/STEFU/serialize-4                    1.080k ± 0%
SerializeNative/STEFU/zstd-4                          1.000 ± 0%
DeserializeNative/STEF/deser-4                        669.0 ± 0%
DeserializeNative/STEF/zstd-4                         1.000 ± 0%
DeserializeNative/STEFU/deser-4                       729.0 ± 0%
DeserializeNative/STEFU/zstd-4                        1.000 ± 0%
SerializeFromPdata/STEF/serialize-4                  256.4k ± 0%
SerializeFromPdata/STEF/zstd-4                        1.000 ± 0%
SerializeFromPdata/STEFU/serialize-4                 1.081k ± 0%
SerializeFromPdata/STEFU/zstd-4                       1.000 ± 0%
DeserializeToPdata/STEF/deserialize-4                622.8k ± 0%
DeserializeToPdata/STEF/zstd-4                        1.000 ± 0%
DeserializeToPdata/STEFU/deserialize-4               811.5k ± 0%
DeserializeToPdata/STEFU/zstd-4                       1.000 ± 0%
STEFReaderRead-4                                      669.0 ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4       14.44M ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4     3.920k ± 0%
ReadSTEF-4                                            669.0 ± 0%
ReadSTEFZ-4                                           698.0 ± 0%
ReadSTEFZWriteSTEF-4                                 1.676k ± 0%
geomean                                               309.8

Instead of storing stefz in git we generate them before tests.
The files are fairly large and we store large delta everytime the
format changes.

Files are now deleted from git. otlp2stef tool is used to generate
stefz files from OTLP .pb files that don't change.

We also use a script to check compatibility of a format.
The script checks out old version of otlp2stef, generates
files from that, check outs current version of code and
runs new test code on old files.
@tigrannajaryan tigrannajaryan deleted the tigran/checkcompat branch September 12, 2025 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant