Compare commits

...

2 Commits

Author SHA1 Message Date
Urko d7a14041eb feat: improve benchmark 2023-04-08 22:10:09 +02:00
Urko e48ad6108b feat: add benchmark 2023-04-08 22:05:26 +02:00
3 changed files with 63 additions and 8 deletions

View File

@ -10,9 +10,42 @@ import (
go_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/go"
nest_benchmark "gitea.urkob.com/urko/ess-etl-go/benchmark/nest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func BenchmarkGo(b *testing.B) {
require.NoError(b, os.RemoveAll("./dump"))
require.NoError(b, os.MkdirAll("./dump", os.ModeTemporary))
log.SetFlags(log.Lmicroseconds)
logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_")))
f, err := os.OpenFile("./dump/"+logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644)
require.NoError(b, err)
defer f.Close()
log.SetOutput(f)
for i := 0; i < b.N; i++ {
assert.NoError(b, go_benchmark.BenchmarkNoLog(1))
}
}
func BenchmarkNest(b *testing.B) {
require.NoError(b, os.RemoveAll("./dump"))
require.NoError(b, os.MkdirAll("./dump", os.ModeTemporary))
log.SetFlags(log.Lmicroseconds)
logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_")))
f, err := os.OpenFile("./dump/"+logFileName, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644)
require.NoError(b, err)
defer f.Close()
log.SetOutput(f)
for i := 0; i < b.N; i++ {
assert.NoError(b, nest_benchmark.BenchmarkNoLog(1))
}
}
func TestGoXRequestes(t *testing.T) {
log.SetFlags(log.Lmicroseconds)
logFileName := fmt.Sprintf("%s.txt", time.Now().Format(strings.ReplaceAll(time.RFC1123Z, ":", "_")))

View File

@ -44,21 +44,29 @@ func doRequest(wg *sync.WaitGroup, host, employeeID string, errChan chan error)
return nil
}
func BenchmarkNoLog(totalRequests int) error {
return benchmark(totalRequests, false)
}
func Benchmark(totalRequests int) error {
return benchmark(totalRequests, true)
}
func benchmark(totalRequests int, dolog bool) error {
cr := crono.New()
defer cr.Table()
if dolog {
defer cr.Table()
}
host := "http://127.0.0.1:45654"
wg := &sync.WaitGroup{}
errChan := make(chan error, 1)
wg.Add(1)
wg.Add(totalRequests + 1)
go func(errChan chan error) {
defer wg.Done()
defer func() {
errChan <- nil
}()
for i := 0; i < totalRequests; i++ {
wg.Add(1)
go doRequest(wg, host, "975135", errChan)
}
}(errChan)
@ -68,6 +76,9 @@ func Benchmark(totalRequests int) error {
if err := <-errChan; err != nil {
return fmt.Errorf("Benchmark: %s", err)
}
cr.MarkAndRestart(fmt.Sprintf("go handle %d response", totalRequests))
if dolog {
cr.MarkAndRestart(fmt.Sprintf("go handle %d response", totalRequests))
}
return nil
}

View File

@ -70,10 +70,19 @@ func doRequest(wg *sync.WaitGroup, host string, employeeID int, errChan chan err
return nil
}
func Benchmark(totalRequests int) error {
cr := crono.New()
defer cr.Table()
func BenchmarkNoLog(totalRequests int) error {
return benchmark(totalRequests, false)
}
func Benchmark(totalRequests int) error {
return benchmark(totalRequests, true)
}
func benchmark(totalRequests int, dolog bool) error {
cr := crono.New()
if dolog {
defer cr.Table()
}
host := "http://127.0.0.1:3458/graphql"
wg := &sync.WaitGroup{}
@ -95,6 +104,8 @@ func Benchmark(totalRequests int) error {
if err := <-errChan; err != nil {
return fmt.Errorf("Benchmark: %s", err)
}
cr.MarkAndRestart(fmt.Sprintf("nest handle %d response", totalRequests))
if dolog {
cr.MarkAndRestart(fmt.Sprintf("nest handle %d response", totalRequests))
}
return nil
}