mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-18 15:23:51 +01:00
- Introduced benchmark tests for Entrypoint and ReverseProxy to evaluate performance. - Updated Entrypoint's ServeHTTP method to improve route context management. - Added new test file for entrypoint benchmarks and refined existing tests for route handling.
70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
package synk
|
|
|
|
import (
|
|
"slices"
|
|
"testing"
|
|
)
|
|
|
|
var sizes = []int{1024, 4096, 16384, 65536, 32 * 1024, 128 * 1024, 512 * 1024, 1024 * 1024, 2 * 1024 * 1024}
|
|
|
|
func BenchmarkBytesPool_GetSmall(b *testing.B) {
|
|
for b.Loop() {
|
|
bytesPool.Put(bytesPool.GetSized(1024))
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_MakeSmall(b *testing.B) {
|
|
for b.Loop() {
|
|
_ = make([]byte, 1024)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_GetLarge(b *testing.B) {
|
|
for b.Loop() {
|
|
buf := bytesPool.GetSized(DropThreshold / 2)
|
|
buf[0] = 1
|
|
bytesPool.Put(buf)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_GetLargeUnsized(b *testing.B) {
|
|
for b.Loop() {
|
|
buf := slices.Grow(bytesPool.Get(), DropThreshold/2)
|
|
buf = append(buf, 1)
|
|
bytesPool.Put(buf)
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_MakeLarge(b *testing.B) {
|
|
for b.Loop() {
|
|
buf := make([]byte, DropThreshold/2)
|
|
buf[0] = 1
|
|
_ = buf
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_GetAll(b *testing.B) {
|
|
for i := range b.N {
|
|
bytesPool.Put(bytesPool.GetSized(sizes[i%len(sizes)]))
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_GetAllUnsized(b *testing.B) {
|
|
for i := range b.N {
|
|
bytesPool.Put(slices.Grow(bytesPool.Get(), sizes[i%len(sizes)]))
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPool_MakeAll(b *testing.B) {
|
|
for i := range b.N {
|
|
_ = make([]byte, sizes[i%len(sizes)])
|
|
}
|
|
}
|
|
|
|
func BenchmarkBytesPoolWithMemory(b *testing.B) {
|
|
pool := GetBytesPoolWithUniqueMemory()
|
|
for i := range b.N {
|
|
pool.Put(slices.Grow(pool.Get(), sizes[i%len(sizes)]))
|
|
}
|
|
}
|