Skip to content

Conversation

@tigrannajaryan
Copy link
Collaborator

Resolves #287

This adds tracking of new data created by mutateRandom and limits it if it reaches hard-coded maximums.

@github-actions
Copy link

github-actions bot commented Dec 9, 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/serialize-4                     10.72m ± 10%   11.14m ±  4%       ~ (p=0.180 n=6)
SerializeNative/STEFU/serialize-4                    35.13m ±  4%   34.92m ±  2%       ~ (p=0.485 n=6)
DeserializeNative/STEF/deser-4                       2.460m ±  2%   2.435m ±  3%       ~ (p=0.699 n=6)
DeserializeNative/STEFU/deser-4                      7.250m ±  1%   7.228m ±  1%       ~ (p=0.937 n=6)
SerializeFromPdata/STEF/serialize-4                  141.4m ±  7%   138.3m ±  4%  -2.19% (p=0.041 n=6)
SerializeFromPdata/STEFU/serialize-4                 36.18m ±  2%   35.26m ±  1%  -2.56% (p=0.009 n=6)
DeserializeToPdata/STEF/deserialize-4                46.85m ±  1%   46.57m ±  1%       ~ (p=0.240 n=6)
DeserializeToPdata/STEFU/deserialize-4               63.82m ±  2%   64.69m ±  1%       ~ (p=0.093 n=6)
STEFReaderRead-4                                     2.503m ±  1%   2.499m ±  1%       ~ (p=0.699 n=6)
STEFSerializeMultipart/astronomy-otelmetrics-4        3.404 ± 23%    3.388 ± 26%       ~ (p=0.937 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4     75.43m ±  8%   76.00m ± 10%       ~ (p=0.394 n=6)
ReadSTEF-4                                           2.509m ±  4%   2.582m ±  2%       ~ (p=0.180 n=6)
ReadSTEFZ-4                                          3.162m ±  1%   3.252m ±  3%  +2.84% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                 7.571m ±  3%   8.166m ±  4%  +7.86% (p=0.002 n=6)
geomean                                              21.30m         21.48m        +0.81%

                                                 │ bench-main.txt │           bench-new.txt            │
                                                 │   sec/point    │  sec/point    vs base              │
SerializeNative/STEF/serialize-4                     160.4n ± 10%   166.6n ±  4%       ~ (p=0.180 n=6)
SerializeNative/STEFU/serialize-4                    525.3n ±  4%   522.2n ±  2%       ~ (p=0.485 n=6)
DeserializeNative/STEF/deser-4                       36.78n ±  2%   36.42n ±  3%       ~ (p=0.699 n=6)
DeserializeNative/STEFU/deser-4                      108.5n ±  1%   108.1n ±  1%       ~ (p=0.660 n=6)
SerializeFromPdata/STEF/serialize-4                  2.116µ ±  6%   2.069µ ±  4%  -2.20% (p=0.041 n=6)
SerializeFromPdata/STEFU/serialize-4                 541.1n ±  2%   527.3n ±  1%  -2.55% (p=0.009 n=6)
DeserializeToPdata/STEF/deserialize-4                700.8n ±  1%   696.5n ±  1%       ~ (p=0.240 n=6)
DeserializeToPdata/STEFU/deserialize-4               954.6n ±  2%   967.7n ±  1%       ~ (p=0.093 n=6)
STEFReaderRead-4                                     37.44n ±  1%   37.38n ±  1%       ~ (p=0.699 n=6)
STEFSerializeMultipart/astronomy-otelmetrics-4       4.326µ ± 23%   4.307µ ± 26%       ~ (p=0.853 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4     95.87n ±  8%   96.59n ± 10%       ~ (p=0.394 n=6)
ReadSTEF-4                                           37.54n ±  4%   38.64n ±  2%       ~ (p=0.169 n=6)
ReadSTEFZ-4                                          47.32n ±  1%   48.67n ±  3%  +2.84% (p=0.002 n=6)
ReadSTEFZWriteSTEF-4                                 113.3n ±  3%   122.3n ±  4%  +7.90% (p=0.002 n=6)
geomean                                              224.1n         225.9n        +0.81%

                                                 │ bench-main.txt │            bench-new.txt             │
                                                 │      B/op      │     B/op      vs base                │
SerializeNative/STEF/serialize-4                     3.342Mi ± 0%   3.346Mi ± 0%  +0.12% (p=0.015 n=6)
SerializeNative/STEFU/serialize-4                    7.530Mi ± 0%   7.530Mi ± 0%       ~ (p=0.206 n=6)
DeserializeNative/STEF/deser-4                       934.4Ki ± 0%   934.4Ki ± 0%       ~ (p=1.000 n=6) ¹
DeserializeNative/STEFU/deser-4                      1.471Mi ± 0%   1.471Mi ± 0%       ~ (p=0.545 n=6)
SerializeFromPdata/STEF/serialize-4                  74.82Mi ± 0%   74.82Mi ± 0%       ~ (p=0.584 n=6)
SerializeFromPdata/STEFU/serialize-4                 7.530Mi ± 0%   7.530Mi ± 0%       ~ (p=0.574 n=6)
DeserializeToPdata/STEF/deserialize-4                31.97Mi ± 0%   31.97Mi ± 0%  +0.00% (p=0.019 n=6)
DeserializeToPdata/STEFU/deserialize-4               38.64Mi ± 0%   38.64Mi ± 0%       ~ (p=0.935 n=6)
STEFReaderRead-4                                     936.2Ki ± 0%   936.2Ki ± 0%       ~ (p=1.000 n=6) ¹
STEFSerializeMultipart/astronomy-otelmetrics-4       3.364Gi ± 0%   3.363Gi ± 0%       ~ (p=0.699 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4     20.41Mi ± 0%   20.41Mi ± 0%       ~ (p=0.658 n=6)
ReadSTEF-4                                           936.2Ki ± 0%   936.2Ki ± 0%       ~ (p=0.299 n=6)
ReadSTEFZ-4                                          10.27Mi ± 0%   10.27Mi ± 0%       ~ (p=0.240 n=6)
ReadSTEFZWriteSTEF-4                                 13.43Mi ± 0%   13.43Mi ± 0%       ~ (p=0.368 n=6)
geomean                                              10.47Mi        10.47Mi       +0.01%
¹ all samples are equal

                                                 │ bench-main.txt │            bench-new.txt            │
                                                 │   allocs/op    │  allocs/op   vs base                │
SerializeNative/STEF/serialize-4                      2.651k ± 0%   2.660k ± 0%  +0.32% (p=0.032 n=6)
SerializeNative/STEFU/serialize-4                      885.0 ± 0%    885.0 ± 0%       ~ (p=0.455 n=6)
DeserializeNative/STEF/deser-4                         465.0 ± 0%    465.0 ± 0%       ~ (p=1.000 n=6) ¹
DeserializeNative/STEFU/deser-4                        469.0 ± 0%    469.0 ± 0%       ~ (p=1.000 n=6) ¹
SerializeFromPdata/STEF/serialize-4                   134.7k ± 0%   134.7k ± 0%       ~ (p=0.887 n=6)
SerializeFromPdata/STEFU/serialize-4                   886.0 ± 0%    886.0 ± 0%       ~ (p=1.000 n=6) ¹
DeserializeToPdata/STEF/deserialize-4                 756.2k ± 0%   756.2k ± 0%       ~ (p=1.000 n=6)
DeserializeToPdata/STEFU/deserialize-4                944.9k ± 0%   944.9k ± 0%       ~ (p=1.000 n=6) ¹
STEFReaderRead-4                                       465.0 ± 0%    465.0 ± 0%       ~ (p=1.000 n=6) ¹
STEFSerializeMultipart/astronomy-otelmetrics-4        13.15M ± 0%   13.15M ± 0%       ~ (p=0.937 n=6)
STEFDeserializeMultipart/astronomy-otelmetrics-4      2.294k ± 0%   2.294k ± 0%       ~ (p=1.000 n=6) ¹
ReadSTEF-4                                             466.0 ± 0%    466.0 ± 0%       ~ (p=1.000 n=6) ¹
ReadSTEFZ-4                                            503.0 ± 0%    503.0 ± 0%       ~ (p=1.000 n=6) ¹
ReadSTEFZWriteSTEF-4                                  1.233k ± 0%   1.233k ± 0%       ~ (p=1.000 n=6) ¹
geomean                                               6.359k        6.361k       +0.02%
¹ all samples are equal
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                    11.14m ±  4%
SerializeNative/STEFU/serialize-4                   34.92m ±  2%
DeserializeNative/STEF/deser-4                      2.435m ±  3%
DeserializeNative/STEFU/deser-4                     7.228m ±  1%
SerializeFromPdata/STEF/serialize-4                 138.3m ±  4%
SerializeFromPdata/STEFU/serialize-4                35.26m ±  1%
DeserializeToPdata/STEF/deserialize-4               46.57m ±  1%
DeserializeToPdata/STEFU/deserialize-4              64.69m ±  1%
STEFReaderRead-4                                    2.499m ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4       3.388 ± 26%
STEFDeserializeMultipart/astronomy-otelmetrics-4    76.00m ± 10%
ReadSTEF-4                                          2.582m ±  2%
ReadSTEFZ-4                                         3.252m ±  3%
ReadSTEFZWriteSTEF-4                                8.166m ±  4%
geomean                                             21.48m

                                                 │ bench-new.txt │
                                                 │   sec/point   │
SerializeNative/STEF/serialize-4                    166.6n ±  4%
SerializeNative/STEFU/serialize-4                   522.2n ±  2%
DeserializeNative/STEF/deser-4                      36.42n ±  3%
DeserializeNative/STEFU/deser-4                     108.1n ±  1%
SerializeFromPdata/STEF/serialize-4                 2.069µ ±  4%
SerializeFromPdata/STEFU/serialize-4                527.3n ±  1%
DeserializeToPdata/STEF/deserialize-4               696.5n ±  1%
DeserializeToPdata/STEFU/deserialize-4              967.7n ±  1%
STEFReaderRead-4                                    37.38n ±  1%
STEFSerializeMultipart/astronomy-otelmetrics-4      4.307µ ± 26%
STEFDeserializeMultipart/astronomy-otelmetrics-4    96.59n ± 10%
ReadSTEF-4                                          38.64n ±  2%
ReadSTEFZ-4                                         48.67n ±  3%
ReadSTEFZWriteSTEF-4                                122.3n ±  4%
geomean                                             225.9n

                                                 │ bench-new.txt │
                                                 │     B/op      │
SerializeNative/STEF/serialize-4                    3.346Mi ± 0%
SerializeNative/STEFU/serialize-4                   7.530Mi ± 0%
DeserializeNative/STEF/deser-4                      934.4Ki ± 0%
DeserializeNative/STEFU/deser-4                     1.471Mi ± 0%
SerializeFromPdata/STEF/serialize-4                 74.82Mi ± 0%
SerializeFromPdata/STEFU/serialize-4                7.530Mi ± 0%
DeserializeToPdata/STEF/deserialize-4               31.97Mi ± 0%
DeserializeToPdata/STEFU/deserialize-4              38.64Mi ± 0%
STEFReaderRead-4                                    936.2Ki ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4      3.363Gi ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4    20.41Mi ± 0%
ReadSTEF-4                                          936.2Ki ± 0%
ReadSTEFZ-4                                         10.27Mi ± 0%
ReadSTEFZWriteSTEF-4                                13.43Mi ± 0%
geomean                                             10.47Mi

                                                 │ bench-new.txt │
                                                 │   allocs/op   │
SerializeNative/STEF/serialize-4                     2.660k ± 0%
SerializeNative/STEFU/serialize-4                     885.0 ± 0%
DeserializeNative/STEF/deser-4                        465.0 ± 0%
DeserializeNative/STEFU/deser-4                       469.0 ± 0%
SerializeFromPdata/STEF/serialize-4                  134.7k ± 0%
SerializeFromPdata/STEFU/serialize-4                  886.0 ± 0%
DeserializeToPdata/STEF/deserialize-4                756.2k ± 0%
DeserializeToPdata/STEFU/deserialize-4               944.9k ± 0%
STEFReaderRead-4                                      465.0 ± 0%
STEFSerializeMultipart/astronomy-otelmetrics-4       13.15M ± 0%
STEFDeserializeMultipart/astronomy-otelmetrics-4     2.294k ± 0%
ReadSTEF-4                                            466.0 ± 0%
ReadSTEFZ-4                                           503.0 ± 0%
ReadSTEFZWriteSTEF-4                                 1.233k ± 0%
geomean                                              6.361k

@tigrannajaryan tigrannajaryan force-pushed the tigran/limit-mutaterandom-size branch from 6fbfcb4 to 293f9ea Compare December 9, 2025 19:26
@tigrannajaryan tigrannajaryan changed the title Limit size of data generated by mutateRandom in Go Limit size of data generated by mutateRandom Dec 9, 2025
Resolves #287

This adds tracking of new data created by mutateRandom and limits
it if it reaches hard-coded maximums.
@tigrannajaryan tigrannajaryan force-pushed the tigran/limit-mutaterandom-size branch from 293f9ea to d4a492f Compare December 9, 2025 19:39
@tigrannajaryan tigrannajaryan marked this pull request as ready for review December 9, 2025 19:41
@tigrannajaryan tigrannajaryan merged commit 036a678 into main Dec 11, 2025
9 checks passed
@tigrannajaryan tigrannajaryan deleted the tigran/limit-mutaterandom-size branch December 11, 2025 17:23
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.

Limit size of data generated by mutateRandom

2 participants