[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH RFC 55/59] plan: Make the matrix generation more programmatic



From: George Dunlap <george.dunlap@xxxxxxxxxx>

Rather than have nested loops, keep a running list of all the configs
we've created so far.  Then for each existing new element of the
matrix, combine it with all the existing columns.

Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
 plan.go | 50 +++++++++++++++++++++++++++++++-------------------
 1 file changed, 31 insertions(+), 19 deletions(-)

diff --git a/plan.go b/plan.go
index e535603..736d9f3 100644
--- a/plan.go
+++ b/plan.go
@@ -72,7 +72,9 @@ func (plan *BenchmarkPlan) ExpandInput() (err error) {
                schedulers = append(schedulers, "")
        }
 
-       // Always do the baselines
+       // Start by making a slice with baselines and each of the counts
+       var a, b []BenchmarkRun
+       
        for _, wn := range plan.Input.SimpleMatrix.Workers {
                wp := WorkerPresets[wn]
                
@@ -85,39 +87,49 @@ func (plan *BenchmarkPlan) ExpandInput() (err error) {
                        WorkerSets:[]WorkerSet{{Params:wp, Count:1}},
                        RuntimeSeconds:10,
                }
-               
-               for _, s := range schedulers {
-                       fmt.Printf("Making baseline %s run, sched %s\n", wn, s)
-                       run.RunConfig.Scheduler = s
-                       run.Label = wn+" baseline "+s
-                       plan.Runs = append(plan.Runs, run)
-               }
+
+               run.Label = wn+" baseline"
+               a = append(a, run)
        }
-               
+
+
        for _, c := range plan.Input.SimpleMatrix.Count {
                run := BenchmarkRun{
                        RuntimeSeconds:10,
                }
                
-               var label string
                for _, wn := range plan.Input.SimpleMatrix.Workers {
                        wp := WorkerPresets[wn]
                        
-                       if label != "" {
-                               label = label+" + "
+                       if run.Label != "" {
+                               run.Label = run.Label+" + "
                        }
-                       label = fmt.Sprintf("%s%s %d ", label, wn, c)
-                       
+                       run.Label = fmt.Sprintf("%s%s %d", run.Label, wn, c)
+
                        ws := WorkerSet{Params:wp, Count:c}
                        run.WorkerSets = append(run.WorkerSets, ws)
                }
-               for _, s := range schedulers {
-                       fmt.Printf("Making count %d run, sched %s\n", c, s)
-                       run.RunConfig.Scheduler = s
-                       run.Label = label+s
-                       plan.Runs = append(plan.Runs, run)
+
+               a = append(a, run)
+       }
+
+       // ...then cross it by schedulers
+       if len(schedulers) > 0 {
+               for _, base := range a {
+                       for _, s := range schedulers {
+                               run := base
+                               run.RunConfig.Scheduler = s
+                               run.Label = run.Label+" "+s
+                               b = append(b, run)
+                       }
                }
+               a = b
+               b = nil
        }
 
+       for i := range a {
+               fmt.Printf("%s\n", a[i].Label)
+       }
+       plan.Runs = a;
        return
 }
-- 
2.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.