Files
errorx/bench_test.go
T

49 lines
1.1 KiB
Go
Raw Permalink Normal View History

package errorx_test
import (
"context"
"errors"
"testing"
"github.com/yuninks/errorx"
)
// 错误路径的性能基准。以下是在 Ryzen 7 5800H / go1.26 上的参考值:
//
// BenchmarkErr 370 ns/op 160 B/op 2 allocs/op (含一次调用栈采集)
// BenchmarkErrKV 825 ns/op 944 B/op 7 allocs/op
// BenchmarkWrap 543 ns/op 272 B/op 3 allocs/op
// BenchmarkMsg 133 ns/op 16 B/op 1 allocs/op (只渲染文案,不抓栈)
//
// 栈只在构造错误值时抓取一次,且只存程序计数器;函数名/文件/行号在调用
// StackTrace() 或 %+v 时才解析。
var benchErr = errorx.New("bench_err", 1, "基准错误: #a#")
func BenchmarkErr(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = benchErr.Err()
}
}
func BenchmarkErrKV(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = benchErr.ErrKV("a", "1")
}
}
func BenchmarkWrap(b *testing.B) {
cause := errors.New("boom")
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = benchErr.Wrap(cause)
}
}
func BenchmarkMsg(b *testing.B) {
ctx := context.Background()
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = benchErr.Msg(ctx)
}
}