package engine import ( "strconv" "testing" "gitea.maximumdirect.net/eric/ConfigKit/internal/document" ) func BenchmarkComposeWideMappings(b *testing.B) { for _, width := range []int{128, 256, 512} { b.Run(strconv.Itoa(width), func(b *testing.B) { left := benchmarkCatalog("source-1", 0, width) right := benchmarkCatalog("source-2", width, width) b.ReportAllocs() b.ResetTimer() for range b.N { if _, diagnostics := composeDocuments(left, right); len(diagnostics) != 0 { b.Fatal(diagnostics) } } }) } } func BenchmarkOverlayRecursiveMappings(b *testing.B) { for _, width := range []int{128, 256, 512} { b.Run(strconv.Itoa(width), func(b *testing.B) { base, diagnostics := composeDocuments(benchmarkCatalog("source-1", 0, width)) if len(diagnostics) != 0 { b.Fatal(diagnostics) } overlay := benchmarkCatalog("source-2", width/2, width) b.ReportAllocs() b.ResetTimer() for range b.N { if _, diagnostics := overlayDocuments(base, overlay); len(diagnostics) != 0 { b.Fatal(diagnostics) } } }) } } func benchmarkCatalog(source string, first, width int) *document.Node { location := document.Location{SourceID: source} entries := make([]document.Entry, width) for index := range entries { entries[index] = document.Entry{ Key: "item-" + strconv.Itoa(first+index), Value: &document.Node{Kind: document.Mapping, Location: location, Mapping: []document.Entry{{Key: "enabled", Value: &document.Node{Kind: document.Boolean, Text: "true", Location: location}}}}, } } return &document.Node{Kind: document.Mapping, Location: location, Mapping: []document.Entry{{ Key: "catalog", Value: &document.Node{Kind: document.Mapping, Location: location, Mapping: entries}, }}} }