generated from PenaSide/GolangTemplate
125 lines
3.8 KiB
Go
125 lines
3.8 KiB
Go
package benchmarks
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"github.com/stretchr/testify/require"
|
|
"net/http"
|
|
"sync"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
//500
|
|
//PS D:\GoProject\pena_pj\customer\tests\benchmarks> go test -bench=BenchmarkAccountPipe -benchmem -timeout 30m
|
|
//WAITER OK
|
|
//goos: windows
|
|
//goarch: amd64
|
|
//pkg: penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks
|
|
//cpu: AMD Ryzen 5 5600H with Radeon Graphics
|
|
//BenchmarkAccountPipe/COUNT_500-12 1 540604425700 ns/op 16440056 B/op 77490 allocs/op
|
|
//PASS
|
|
//ok penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks 540.669s
|
|
|
|
//1000
|
|
//PS D:\GoProject\pena_pj\customer\tests\benchmarks> go test -bench=BenchmarkAccountPipe -benchmem -timeout 30m
|
|
//WAITER OK
|
|
//goos: windows
|
|
//goarch: amd64
|
|
//pkg: penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks
|
|
//cpu: AMD Ryzen 5 5600H with Radeon Graphics
|
|
//BenchmarkAccountPipe/COUNT_1000-12 1 1075578283500 ns/op 32757832 B/op 154755 allocs/op
|
|
//PASS
|
|
//ok penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks 1075.632s
|
|
|
|
func BenchmarkAccountPipe(b *testing.B) {
|
|
for _, n := range []int{500} {
|
|
b.Run(fmt.Sprintf("COUNT_%d", n), func(b *testing.B) {
|
|
var wg sync.WaitGroup
|
|
for i := 0; i < b.N; i++ {
|
|
wg.Add(n)
|
|
for j := 0; j < n; j++ {
|
|
go func(j int) {
|
|
defer wg.Done()
|
|
userID := fmt.Sprintf("user%d", j)
|
|
fmt.Println(userID)
|
|
resp, err := http.Get(fmt.Sprintf("http://localhost:3000/account-pipe/%s", userID))
|
|
require.NoError(b, err)
|
|
defer resp.Body.Close()
|
|
scanner := bufio.NewScanner(resp.Body)
|
|
count := 0
|
|
for scanner.Scan() {
|
|
if count == 25 {
|
|
break
|
|
}
|
|
count++
|
|
line := scanner.Text()
|
|
fmt.Println("Received:", line)
|
|
}
|
|
time.Sleep(2 * time.Second)
|
|
}(j)
|
|
time.Sleep(time.Second)
|
|
}
|
|
wg.Wait()
|
|
fmt.Println("WAITER OK")
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
//500
|
|
//PS D:\GoProject\pena_pj\customer\tests\benchmarks> go test -bench=BenchmarkAccountPipeWithWorker -benchmem
|
|
//goos: windows
|
|
//goarch: amd64
|
|
//pkg: penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks
|
|
//cpu: AMD Ryzen 5 5600H with Radeon Graphics
|
|
//BenchmarkAccountPipeWithWorker/COUNT_500-12 1 571782250200 ns/op 16471520 B/op 77575 allocs/op
|
|
//PASS
|
|
//ok penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks 571.868s
|
|
|
|
//1000
|
|
//PS D:\GoProject\pena_pj\customer\tests\benchmarks> go test -bench=BenchmarkAccountPipeWithWorker -benchmem -timeout 30m
|
|
//goos: windows
|
|
//goarch: amd64
|
|
//pkg: penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks
|
|
//cpu: AMD Ryzen 5 5600H with Radeon Graphics
|
|
//BenchmarkAccountPipeWithWorker/COUNT_1000-12 1 1076407088000 ns/op 34201936 B/op 156101 allocs/op
|
|
//PASS
|
|
//ok penahub.gitlab.yandexcloud.net/pena-services/customer/tests/benchmarks 1076.521s
|
|
|
|
func BenchmarkAccountPipeWithWorker(b *testing.B) {
|
|
for _, n := range []int{500} {
|
|
b.Run(fmt.Sprintf("COUNT_%d", n), func(b *testing.B) {
|
|
var wg sync.WaitGroup
|
|
for i := 0; i < b.N; i++ {
|
|
wg.Add(n)
|
|
for j := 0; j < n; j++ {
|
|
go func(j int) {
|
|
defer wg.Done()
|
|
userID := fmt.Sprintf("user%d", j)
|
|
//fmt.Println(userID)
|
|
resp, err := http.Get(fmt.Sprintf("http://localhost:3000/account-pipe-wc/%s", userID))
|
|
require.NoError(b, err)
|
|
defer resp.Body.Close()
|
|
scanner := bufio.NewScanner(resp.Body)
|
|
count := 0
|
|
for scanner.Scan() {
|
|
if count == 25 {
|
|
break
|
|
}
|
|
count++
|
|
line := scanner.Text()
|
|
fmt.Println("Received:", line)
|
|
}
|
|
time.Sleep(2 * time.Second)
|
|
}(j)
|
|
time.Sleep(time.Second)
|
|
}
|
|
wg.Wait()
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
})
|
|
}
|
|
}
|