Reimplement benchmark
This commit is contained in:
parent
9fd93f91a1
commit
7b4e3d4cf8
2 changed files with 24 additions and 17 deletions
|
@ -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{
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue