127 lines
2.8 KiB
Go
127 lines
2.8 KiB
Go
package benchmark
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/landaiqing/go-pixelnebula"
|
|
"github.com/landaiqing/go-pixelnebula/style"
|
|
"github.com/landaiqing/go-pixelnebula/theme"
|
|
)
|
|
|
|
// BenchmarkDifferentStyles 测试不同风格的生成性能
|
|
func BenchmarkDifferentStyles(b *testing.B) {
|
|
styles := []struct {
|
|
name string
|
|
style style.StyleType
|
|
}{
|
|
{"GirlStyle", style.GirlStyle},
|
|
{"AteamStyle", style.AteamStyle},
|
|
{"BlondStyle", style.BlondStyle},
|
|
{"FirehairStyle", style.FirehairStyle},
|
|
}
|
|
|
|
for _, s := range styles {
|
|
b.Run(s.name, func(b *testing.B) {
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
pn := pixelnebula.NewPixelNebula()
|
|
pn.WithStyle(s.style)
|
|
pn.WithSize(231, 231)
|
|
|
|
_, err := pn.Generate("benchmark-style-"+s.name, false).ToSVG()
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// BenchmarkDifferentThemes 测试不同主题的生成性能
|
|
func BenchmarkDifferentThemes(b *testing.B) {
|
|
// 假设有5个内置主题索引
|
|
themeCount := 5
|
|
|
|
for i := 0; i < themeCount; i++ {
|
|
b.Run("Theme_"+Itoa(i), func(b *testing.B) {
|
|
b.ResetTimer()
|
|
|
|
for j := 0; j < b.N; j++ {
|
|
pn := pixelnebula.NewPixelNebula()
|
|
pn.WithStyle(style.GirlStyle)
|
|
pn.WithSize(231, 231)
|
|
|
|
_, err := pn.Generate("benchmark-theme-"+Itoa(i), false).SetTheme(i).Build().ToSVG()
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// BenchmarkCustomTheme 测试自定义主题的性能
|
|
func BenchmarkCustomTheme(b *testing.B) {
|
|
// 创建一个自定义主题
|
|
customTheme := []theme.Theme{
|
|
{
|
|
theme.ThemePart{
|
|
"env": []string{"#f0f0f0", "#e0e0e0"},
|
|
"head": []string{"#ffd699"},
|
|
"eyes": []string{"#555555", "#ffffff"},
|
|
"mouth": []string{"#ff6b6b"},
|
|
"top": []string{"#6b5b95", "#6b5b95"},
|
|
"clo": []string{"#88b04b"},
|
|
},
|
|
},
|
|
}
|
|
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
pn := pixelnebula.NewPixelNebula()
|
|
pn.WithStyle(style.GirlStyle)
|
|
pn.WithSize(231, 231)
|
|
pn.WithCustomizeTheme(customTheme)
|
|
|
|
_, err := pn.Generate("benchmark-custom-theme", false).ToSVG()
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
// BenchmarkStyleThemeCombinations 测试不同风格和主题组合的性能
|
|
func BenchmarkStyleThemeCombinations(b *testing.B) {
|
|
styles := []style.StyleType{style.GirlStyle, style.AsianStyle}
|
|
themes := []int{0, 1, 2}
|
|
|
|
for _, s := range styles {
|
|
for _, t := range themes {
|
|
styleName := "Unknown"
|
|
switch s {
|
|
case style.GirlStyle:
|
|
styleName = "Girl"
|
|
case style.AsianStyle:
|
|
styleName = "Asian"
|
|
}
|
|
|
|
b.Run(styleName+"_Theme"+Itoa(t), func(b *testing.B) {
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
pn := pixelnebula.NewPixelNebula()
|
|
pn.WithStyle(s)
|
|
pn.WithSize(231, 231)
|
|
|
|
_, err := pn.Generate("benchmark-combo", false).SetTheme(t).Build().ToSVG()
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|