Skip to content

Commit f0045e9

Browse files
committed
less code
1 parent 1c98f79 commit f0045e9

File tree

1 file changed

+88
-158
lines changed

1 file changed

+88
-158
lines changed

tools/debug/algodump/compress_bench_test.go

Lines changed: 88 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -177,67 +177,39 @@ var defaultFilterOptions = []filterOption{
177177
{name: "av", onlyAV: true},
178178
}
179179

180-
func parseFilterOptions(keys []string) []filterOption {
181-
for _, key := range keys {
182-
if key == "" {
183-
continue
184-
}
185-
val := strings.TrimSpace(os.Getenv(key))
186-
if val == "" {
187-
continue
188-
}
189-
var opts []filterOption
190-
seen := make(map[string]struct{})
191-
for _, part := range strings.Split(val, ",") {
192-
switch strings.ToLower(strings.TrimSpace(part)) {
193-
case "all":
194-
if _, ok := seen["all"]; !ok {
195-
opts = append(opts, filterOption{name: "all", onlyAV: false})
196-
seen["all"] = struct{}{}
197-
}
198-
case "av", "onlyav", "votes":
199-
if _, ok := seen["av"]; !ok {
200-
opts = append(opts, filterOption{name: "av", onlyAV: true})
201-
seen["av"] = struct{}{}
202-
}
203-
}
204-
}
205-
if len(opts) > 0 {
206-
return opts
180+
func parseFilterOptions(key string) []filterOption {
181+
val := strings.TrimSpace(os.Getenv(key))
182+
var opts []filterOption
183+
for _, part := range strings.Split(val, ",") {
184+
switch strings.ToLower(strings.TrimSpace(part)) {
185+
case "all":
186+
opts = append(opts, filterOption{name: "all", onlyAV: false})
187+
case "av":
188+
opts = append(opts, filterOption{name: "av", onlyAV: true})
207189
}
208190
}
191+
if len(opts) > 0 {
192+
return opts
193+
}
209194
return defaultFilterOptions
210195
}
211196

212-
func parseIntListFromEnv(keys []string, defaults []int) []int {
213-
for _, key := range keys {
214-
if key == "" {
197+
func parseIntListFromEnv(key string, defaults []int) []int {
198+
val := strings.TrimSpace(os.Getenv(key))
199+
var parsed []int
200+
for _, part := range strings.Split(val, ",") {
201+
numStr := strings.TrimSpace(part)
202+
if numStr == "" {
215203
continue
216204
}
217-
val := strings.TrimSpace(os.Getenv(key))
218-
if val == "" {
205+
num, err := strconv.Atoi(numStr)
206+
if err != nil {
219207
continue
220208
}
221-
var parsed []int
222-
seen := make(map[int]struct{})
223-
for _, part := range strings.Split(val, ",") {
224-
numStr := strings.TrimSpace(part)
225-
if numStr == "" {
226-
continue
227-
}
228-
num, err := strconv.Atoi(numStr)
229-
if err != nil {
230-
continue
231-
}
232-
if _, ok := seen[num]; ok {
233-
continue
234-
}
235-
seen[num] = struct{}{}
236-
parsed = append(parsed, num)
237-
}
238-
if len(parsed) > 0 {
239-
return parsed
240-
}
209+
parsed = append(parsed, num)
210+
}
211+
if len(parsed) > 0 {
212+
return parsed
241213
}
242214
return defaults
243215
}
@@ -342,104 +314,60 @@ func runDecompressionLoop(b *testing.B, compressed [][]byte, decompress simpleDe
342314
}
343315
}
344316

345-
type levelWindowLog struct {
346-
level int
347-
windowLog int
348-
}
349-
350317
type levelWindow struct {
351318
level int
352319
window int
353320
}
354321

355-
// parseConfigFromEnv parses configuration from environment variables with a generic two-field struct
356-
func parseConfigFromEnv[T comparable](keys []string, defaults []T, parse func(field1, field2 string) (T, error)) []T {
357-
for _, key := range keys {
358-
if key == "" {
322+
func parseLevelWindows(key string, defaults []levelWindow) []levelWindow {
323+
val := strings.TrimSpace(os.Getenv(key))
324+
var result []levelWindow
325+
for _, part := range strings.Split(val, ",") {
326+
fields := strings.Split(part, ":")
327+
if len(fields) != 2 {
359328
continue
360329
}
361-
val := strings.TrimSpace(os.Getenv(key))
362-
if val == "" {
330+
level, err1 := strconv.Atoi(strings.TrimSpace(fields[0]))
331+
window, err2 := strconv.Atoi(strings.TrimSpace(fields[1]))
332+
if err1 != nil || err2 != nil {
363333
continue
364334
}
365-
var result []T
366-
seen := make(map[T]struct{})
367-
for _, part := range strings.Split(val, ",") {
368-
fields := strings.Split(part, ":")
369-
if len(fields) != 2 {
370-
continue
371-
}
372-
cfg, err := parse(strings.TrimSpace(fields[0]), strings.TrimSpace(fields[1]))
373-
if err != nil {
374-
continue
375-
}
376-
if _, ok := seen[cfg]; ok {
377-
continue
378-
}
379-
seen[cfg] = struct{}{}
380-
result = append(result, cfg)
381-
}
382-
if len(result) > 0 {
383-
return result
384-
}
335+
result = append(result, levelWindow{level: level, window: window})
336+
}
337+
if len(result) > 0 {
338+
return result
385339
}
386340
return defaults
387341
}
388342

389-
func parseLevelWindowLogList(keys []string, defaults []levelWindowLog) []levelWindowLog {
390-
return parseConfigFromEnv(keys, defaults, func(f1, f2 string) (levelWindowLog, error) {
391-
level, err1 := strconv.Atoi(f1)
392-
windowLog, err2 := strconv.Atoi(f2)
393-
if err1 != nil {
394-
return levelWindowLog{}, err1
395-
}
396-
if err2 != nil {
397-
return levelWindowLog{}, err2
398-
}
399-
return levelWindowLog{level: level, windowLog: windowLog}, nil
400-
})
401-
}
402-
403-
func parseLevelWindowList(keys []string, defaults []levelWindow) []levelWindow {
404-
return parseConfigFromEnv(keys, defaults, func(f1, f2 string) (levelWindow, error) {
405-
level, err1 := strconv.Atoi(f1)
406-
window, err2 := strconv.Atoi(f2)
407-
if err1 != nil {
408-
return levelWindow{}, err1
409-
}
410-
if err2 != nil {
411-
return levelWindow{}, err2
412-
}
413-
return levelWindow{level: level, window: window}, nil
414-
})
415-
}
416-
417343
var (
418-
// Default compression levels for benchmarks
419-
defaultLevels = []int{1, 3}
420-
defaultLevelsExtend = []int{1, 3, 7, 11}
421-
422-
// Default window configurations for benchmarks
423-
defaultWindowLog = []levelWindowLog{
424-
{level: 1, windowLog: 15},
425-
{level: 1, windowLog: 18},
426-
{level: 1, windowLog: 20},
427-
{level: 3, windowLog: 15},
428-
{level: 3, windowLog: 18},
429-
{level: 3, windowLog: 20},
430-
{level: 7, windowLog: 18},
431-
{level: 11, windowLog: 18},
432-
}
433-
defaultWindows = []levelWindow{
434-
{level: 1, window: 1 << 12},
435-
{level: 1, window: 1 << 15},
436-
{level: 1, window: 1 << 18},
437-
{level: 1, window: 1 << 20},
438-
{level: 2, window: 1 << 15},
439-
{level: 2, window: 1 << 18},
440-
{level: 2, window: 1 << 20},
441-
{level: 3, window: 1 << 18},
442-
{level: 3, window: 1 << 20},
344+
// Default compression levels for klauspost benchmarks
345+
defaultKlauspostLevels = []int{1, 3}
346+
// Default compression levels for zstd benchmarks (gozstd and datadog)
347+
defaultZstdLevels = []int{1, 3, 7, 11}
348+
349+
// Default windowLog configurations for gozstd benchmarks
350+
defaultGozstdWindowLog = []levelWindow{
351+
{level: 1, window: 15},
352+
{level: 1, window: 18},
353+
{level: 1, window: 20},
354+
{level: 3, window: 15},
355+
{level: 3, window: 18},
356+
{level: 3, window: 20},
357+
{level: 7, window: 18},
358+
{level: 11, window: 18},
359+
}
360+
// Default windowLog configurations for klauspost benchmarks
361+
defaultKlauspostWindowLog = []levelWindow{
362+
{level: 1, window: 12},
363+
{level: 1, window: 15},
364+
{level: 1, window: 18},
365+
{level: 1, window: 20},
366+
{level: 2, window: 15},
367+
{level: 2, window: 18},
368+
{level: 2, window: 20},
369+
{level: 3, window: 18},
370+
{level: 3, window: 20},
443371
}
444372
)
445373

@@ -648,11 +576,12 @@ func benchmarkGozstdWindow(b *testing.B, level int, windowLog int) {
648576

649577
// benchmarkKlauspostWindow benchmarks the Klauspost zstd implementation
650578
// with specific window size (one encoder for all messages, resetting window after each)
651-
func benchmarkKlauspostWindow(b *testing.B, level int, windowSize int) {
579+
func benchmarkKlauspostWindow(b *testing.B, level int, windowLog int) {
652580
corpus := loadTestCorpus(b)
653581

654582
filtered := filterMessages(b, corpus, false)
655583

584+
windowSize := 1 << windowLog
656585
enc, err := kzstd.NewWriter(nil, kzstd.WithEncoderLevel(kzstd.EncoderLevel(level)),
657586
kzstd.WithWindowSize(windowSize))
658587
if err != nil {
@@ -668,11 +597,12 @@ func benchmarkKlauspostWindow(b *testing.B, level int, windowSize int) {
668597

669598
// benchmarkKlauspostStream benchmarks the Klauspost zstd implementation
670599
// with a streaming approach (accumulating context across messages)
671-
func benchmarkKlauspostStream(b *testing.B, level int, windowSize int) {
600+
func benchmarkKlauspostStream(b *testing.B, level int, windowLog int) {
672601
corpus := loadTestCorpus(b)
673602

674603
filtered := filterMessages(b, corpus, false)
675604

605+
windowSize := 1 << windowLog
676606
var buf bytes.Buffer
677607
enc, err := kzstd.NewWriter(&buf,
678608
kzstd.WithEncoderLevel(kzstd.EncoderLevel(level)),
@@ -743,7 +673,7 @@ func benchmarkVPackDynamicHelper(b *testing.B, windowSize int) {
743673
// BenchmarkVPackDynamicCompression benchmarks the stateful vpack compression implementation
744674
// This uses the two-layer compression: StatelessEncoder → StatefulEncoder
745675
func BenchmarkVPackDynamicCompression(b *testing.B) {
746-
windowSizes := parseIntListFromEnv([]string{"ALGODUMP_VPACK_WINDOWS"}, []int{1024})
676+
windowSizes := parseIntListFromEnv("ALGODUMP_VPACK_WINDOWS", []int{1024})
747677
for _, windowSize := range windowSizes {
748678
b.Run(fmt.Sprintf("window=%d", windowSize), func(b *testing.B) {
749679
benchmarkVPackDynamicHelper(b, windowSize)
@@ -828,8 +758,8 @@ func BenchmarkVPackDynamicDecompression(b *testing.B) {
828758

829759
func BenchmarkGozstdSimple(b *testing.B) {
830760
corpus := loadTestCorpus(b)
831-
levels := parseIntListFromEnv([]string{"ALGODUMP_GOZSTD_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevelsExtend)
832-
filters := parseFilterOptions([]string{"ALGODUMP_GOZSTD_FILTERS", "ALGODUMP_BENCH_FILTERS"})
761+
levels := parseIntListFromEnv("ALGODUMP_GOZSTD_LEVELS", defaultZstdLevels)
762+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
833763
runSimpleCompressionMatrix(b, "gozstd/simple", corpus, levels, filters, func(level int) (simpleCompressor, func(), error) {
834764
return func(dst, src []byte) ([]byte, error) {
835765
return gozstd.CompressLevel(dst[:0], src, level), nil
@@ -839,8 +769,8 @@ func BenchmarkGozstdSimple(b *testing.B) {
839769

840770
func BenchmarkZstdSimple(b *testing.B) {
841771
corpus := loadTestCorpus(b)
842-
levels := parseIntListFromEnv([]string{"ALGODUMP_ZSTD_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevelsExtend)
843-
filters := parseFilterOptions([]string{"ALGODUMP_ZSTD_FILTERS", "ALGODUMP_BENCH_FILTERS"})
772+
levels := parseIntListFromEnv("ALGODUMP_ZSTD_LEVELS", defaultZstdLevels)
773+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
844774
runSimpleCompressionMatrix(b, "zstd/simple", corpus, levels, filters, func(level int) (simpleCompressor, func(), error) {
845775
return func(dst, src []byte) ([]byte, error) {
846776
return zstd.CompressLevel(dst[:0], src, level)
@@ -850,8 +780,8 @@ func BenchmarkZstdSimple(b *testing.B) {
850780

851781
func BenchmarkKlauspostSimple(b *testing.B) {
852782
corpus := loadTestCorpus(b)
853-
levels := parseIntListFromEnv([]string{"ALGODUMP_KLAUSPOST_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevels)
854-
filters := parseFilterOptions([]string{"ALGODUMP_KLAUSPOST_FILTERS", "ALGODUMP_BENCH_FILTERS"})
783+
levels := parseIntListFromEnv("ALGODUMP_KLAUSPOST_LEVELS", defaultKlauspostLevels)
784+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
855785
runSimpleCompressionMatrix(b, "klauspost/simple", corpus, levels, filters, func(level int) (simpleCompressor, func(), error) {
856786
enc, err := kzstd.NewWriter(nil, kzstd.WithEncoderLevel(kzstd.EncoderLevel(level)))
857787
if err != nil {
@@ -867,8 +797,8 @@ func BenchmarkKlauspostSimple(b *testing.B) {
867797

868798
func BenchmarkGozstdDecompress(b *testing.B) {
869799
corpus := loadTestCorpus(b)
870-
levels := parseIntListFromEnv([]string{"ALGODUMP_GOZSTD_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevelsExtend)
871-
filters := parseFilterOptions([]string{"ALGODUMP_GOZSTD_FILTERS", "ALGODUMP_BENCH_FILTERS"})
800+
levels := parseIntListFromEnv("ALGODUMP_GOZSTD_LEVELS", defaultZstdLevels)
801+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
872802
runSimpleDecompressionMatrix(b, "gozstd/decompress", corpus, levels, filters, func(level int, msgs []StoredMessage) ([][]byte, simpleDecompressor, func(), error) {
873803
compressed := make([][]byte, len(msgs))
874804
for i, msg := range msgs {
@@ -883,8 +813,8 @@ func BenchmarkGozstdDecompress(b *testing.B) {
883813

884814
func BenchmarkZstdDecompress(b *testing.B) {
885815
corpus := loadTestCorpus(b)
886-
levels := parseIntListFromEnv([]string{"ALGODUMP_ZSTD_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevelsExtend)
887-
filters := parseFilterOptions([]string{"ALGODUMP_ZSTD_FILTERS", "ALGODUMP_BENCH_FILTERS"})
816+
levels := parseIntListFromEnv("ALGODUMP_ZSTD_LEVELS", defaultZstdLevels)
817+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
888818
runSimpleDecompressionMatrix(b, "zstd/decompress", corpus, levels, filters, func(level int, msgs []StoredMessage) ([][]byte, simpleDecompressor, func(), error) {
889819
compressed := make([][]byte, len(msgs))
890820
for i, msg := range msgs {
@@ -903,8 +833,8 @@ func BenchmarkZstdDecompress(b *testing.B) {
903833

904834
func BenchmarkKlauspostDecompress(b *testing.B) {
905835
corpus := loadTestCorpus(b)
906-
levels := parseIntListFromEnv([]string{"ALGODUMP_KLAUSPOST_LEVELS", "ALGODUMP_BENCH_LEVELS"}, defaultLevels)
907-
filters := parseFilterOptions([]string{"ALGODUMP_KLAUSPOST_FILTERS", "ALGODUMP_BENCH_FILTERS"})
836+
levels := parseIntListFromEnv("ALGODUMP_KLAUSPOST_LEVELS", defaultKlauspostLevels)
837+
filters := parseFilterOptions("ALGODUMP_BENCH_FILTERS")
908838
runSimpleDecompressionMatrix(b, "klauspost/decompress", corpus, levels, filters, func(level int, msgs []StoredMessage) ([][]byte, simpleDecompressor, func(), error) {
909839
enc, err := kzstd.NewWriter(nil, kzstd.WithEncoderLevel(kzstd.EncoderLevel(level)))
910840
if err != nil {
@@ -931,27 +861,27 @@ func BenchmarkKlauspostDecompress(b *testing.B) {
931861
}
932862

933863
func BenchmarkGozstdWindow(b *testing.B) {
934-
configs := parseLevelWindowLogList([]string{"ALGODUMP_GOZSTD_WINDOW_LOGS", "ALGODUMP_BENCH_WINDOW_LOGS"}, defaultWindowLog)
864+
configs := parseLevelWindows("ALGODUMP_GOZSTD_WINDOW_LOGS", defaultGozstdWindowLog)
935865
for _, cfg := range configs {
936-
b.Run(fmt.Sprintf("gozstd/window/level=%d/windowLog=%d", cfg.level, cfg.windowLog), func(b *testing.B) {
937-
benchmarkGozstdWindow(b, cfg.level, cfg.windowLog)
866+
b.Run(fmt.Sprintf("gozstd/window/level=%d/windowLog=%d", cfg.level, cfg.window), func(b *testing.B) {
867+
benchmarkGozstdWindow(b, cfg.level, cfg.window)
938868
})
939869
}
940870
}
941871

942872
func BenchmarkKlauspostWindow(b *testing.B) {
943-
configs := parseLevelWindowList([]string{"ALGODUMP_KLAUSPOST_WINDOWS", "ALGODUMP_BENCH_WINDOWS"}, defaultWindows)
873+
configs := parseLevelWindows("ALGODUMP_KLAUSPOST_WINDOW_LOGS", defaultKlauspostWindowLog)
944874
for _, cfg := range configs {
945-
b.Run(fmt.Sprintf("klauspost/window/level=%d/window=%d", cfg.level, cfg.window), func(b *testing.B) {
875+
b.Run(fmt.Sprintf("klauspost/window/level=%d/windowLog=%d", cfg.level, cfg.window), func(b *testing.B) {
946876
benchmarkKlauspostWindow(b, cfg.level, cfg.window)
947877
})
948878
}
949879
}
950880

951881
func BenchmarkKlauspostStream(b *testing.B) {
952-
configs := parseLevelWindowList([]string{"ALGODUMP_KLAUSPOST_STREAM_WINDOWS", "ALGODUMP_BENCH_STREAM_WINDOWS"}, defaultWindows)
882+
configs := parseLevelWindows("ALGODUMP_KLAUSPOST_STREAM_WINDOW_LOGS", defaultKlauspostWindowLog)
953883
for _, cfg := range configs {
954-
b.Run(fmt.Sprintf("klauspost/stream/level=%d/window=%d", cfg.level, cfg.window), func(b *testing.B) {
884+
b.Run(fmt.Sprintf("klauspost/stream/level=%d/windowLog=%d", cfg.level, cfg.window), func(b *testing.B) {
955885
benchmarkKlauspostStream(b, cfg.level, cfg.window)
956886
})
957887
}

0 commit comments

Comments
 (0)