mirror of
https://github.com/YuzuZensai/TrollSSH.git
synced 2026-09-13 16:59:03 +00:00
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package render
|
|
|
|
import (
|
|
"path/filepath"
|
|
"sync/atomic"
|
|
"testing"
|
|
|
|
"github.com/YuzuZensai/TrollSSH/internal/tsf"
|
|
)
|
|
|
|
func loadBenchSet(b *testing.B) *tsf.FramesContainer {
|
|
b.Helper()
|
|
matches, _ := filepath.Glob("../../frames/*.tsf")
|
|
if len(matches) == 0 {
|
|
b.Skip("no .tsf frame set in ../../frames")
|
|
}
|
|
fc, err := tsf.Load(matches[0])
|
|
if err != nil {
|
|
b.Skip("failed to load frame set:", err)
|
|
}
|
|
b.Cleanup(func() { _ = fc.Close() })
|
|
return fc
|
|
}
|
|
|
|
func benchRender(b *testing.B, tier ColorTier, w, h int) {
|
|
fc := loadBenchSet(b)
|
|
r := NewRenderer(0, fc.ColorFrames, Options{
|
|
BrightnessThreshold: 40,
|
|
Charset: "detailed",
|
|
}, nil)
|
|
b.ReportAllocs()
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
if _, err := r.Render(i%len(fc.ColorFrames), w, h, false, tier); err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkRenderTrueColor(b *testing.B) { benchRender(b, ColorTierTrueColor, 120, 40) }
|
|
func BenchmarkRender256(b *testing.B) { benchRender(b, ColorTier256, 120, 40) }
|
|
func BenchmarkRenderGray(b *testing.B) { benchRender(b, ColorTierNone, 120, 40) }
|
|
func BenchmarkRenderTrueBig(b *testing.B) { benchRender(b, ColorTierTrueColor, 240, 70) }
|
|
|
|
func BenchmarkRenderCachedParallel(b *testing.B) {
|
|
fc := loadBenchSet(b)
|
|
r := NewRenderer(0, fc.ColorFrames, Options{
|
|
BrightnessThreshold: 40,
|
|
Charset: "detailed",
|
|
}, NewCache(8<<20))
|
|
frame, err := r.Render(0, 120, 40, false, ColorTierTrueColor)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
b.SetBytes(int64(len(frame)))
|
|
b.ReportAllocs()
|
|
var failures atomic.Uint64
|
|
b.ResetTimer()
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
if _, err := r.Render(0, 120, 40, false, ColorTierTrueColor); err != nil {
|
|
failures.Add(1)
|
|
}
|
|
}
|
|
})
|
|
if failures.Load() != 0 {
|
|
b.Fatalf("render failures: %d", failures.Load())
|
|
}
|
|
}
|