mirror of
https://github.com/SagerNet/sing-tun.git
synced 2025-04-02 19:37:40 +03:00
51 lines
861 B
Go
51 lines
861 B
Go
package clashtcpip
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"testing"
|
|
|
|
"golang.org/x/sys/cpu"
|
|
)
|
|
|
|
func Test_SumAVX2(t *testing.T) {
|
|
if !cpu.X86.HasAVX2 {
|
|
t.Skipf("AVX2 unavailable")
|
|
}
|
|
|
|
bytes := make([]byte, chunkSize)
|
|
|
|
for size := 0; size <= chunkSize; size++ {
|
|
for count := 0; count < chunkCount; count++ {
|
|
_, err := rand.Reader.Read(bytes[:size])
|
|
if err != nil {
|
|
t.Skipf("Rand read failed: %v", err)
|
|
}
|
|
|
|
compat := SumCompat(bytes[:size])
|
|
avx := SumAVX2(bytes[:size])
|
|
|
|
if compat != avx {
|
|
t.Errorf("Sum of length=%d mismatched", size)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func Benchmark_SumAVX2(b *testing.B) {
|
|
if !cpu.X86.HasAVX2 {
|
|
b.Skipf("AVX2 unavailable")
|
|
}
|
|
|
|
bytes := make([]byte, chunkSize)
|
|
|
|
_, err := rand.Reader.Read(bytes)
|
|
if err != nil {
|
|
b.Skipf("Rand read failed: %v", err)
|
|
}
|
|
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
SumAVX2(bytes)
|
|
}
|
|
}
|