mirror of
https://github.com/YuzuZensai/TrollSSH.git
synced 2026-09-13 15:49:02 +00:00
♻️ refactor: split src into internal packages and cmd
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
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())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user