58 lines
1.7 KiB
Go
58 lines
1.7 KiB
Go
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},
|
|
}}}
|
|
}
|