Reimplement benchmark

This commit is contained in:
akp 2021-12-10 23:54:54 +00:00
parent 9fd93f91a1
commit 7b4e3d4cf8
No known key found for this signature in database
GPG key ID: AA5726202C8879B7
2 changed files with 24 additions and 17 deletions

View file

@ -107,18 +107,19 @@ type kv struct {
func benchmarkImplementation(implementation string, dir string, inputString string, numberRuns int) (*values, error) {
var results []*runners.Result
var (
tasks []*runners.Task
results []*runners.Result
)
runner := runners.Available[implementation](dir)
for i := 0; i < numberRuns; i++ {
runner.Queue(&runners.Task{
tasks = append(tasks, &runners.Task{
TaskID: makeBenchmarkID(runners.PartOne, i),
Part: runners.PartOne,
Input: inputString,
})
runner.Queue(&runners.Task{
}, &runners.Task{
TaskID: makeBenchmarkID(runners.PartTwo, i),
Part: runners.PartTwo,
Input: inputString,
@ -133,14 +134,21 @@ func benchmarkImplementation(implementation string, dir string, inputString stri
),
)
res, cleanup := runner.Run()
if err := runner.Start(); err != nil {
return nil, err
}
defer func() {
_ = runner.Stop()
_ = runner.Cleanup()
}()
for roe := range res {
if roe.Error != nil {
for _, task := range tasks {
res, err := runner.Run(task)
if err != nil {
_ = pb.Close()
return nil, roe.Error
return nil, err
}
results = append(results, roe.Result)
results = append(results, res)
_ = pb.Add(1)
}
@ -160,10 +168,6 @@ func benchmarkImplementation(implementation string, dir string, inputString stri
}
}
if cleanup != nil {
cleanup()
}
return &values{
implementation: runners.RunnerNames[implementation],
values: []kv{

View file

@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/codemicro/adventOfCode/runtime/benchmark"
"io/ioutil"
"path/filepath"
@ -55,7 +56,7 @@ func run() error {
challengeInputString := string(challengeInput)
if args.Benchmark {
//return benchmark.Run(selectedChallenge, challengeInputString, args.BenchmarkN)
return benchmark.Run(selectedChallenge, challengeInputString, args.BenchmarkN)
}
// List and select implementations
@ -80,8 +81,10 @@ func run() error {
return err
}
if err := runMainTasks(runner, challengeInputString); err != nil {
return err
if !args.TestOnly {
if err := runMainTasks(runner, challengeInputString); err != nil {
return err
}
}
return nil