       print(testDescription)
     }
   case .run:
-    runBenchmarks(config)
+    SampleRunner(config).runBenchmarks()
     if let x = config.afterRunSleep {
       sleep(x)
     }

  func measureMemoryUsage() -> Int {
    let current = SampleRunner.getResourceUtilization()
    let maxRSS = current.ru_maxrss - baseline.ru_maxrss

    if c.verbose {
      let pages = maxRSS / sysconf(_SC_PAGESIZE)
      func deltaEquation(_ stat: KeyPath<rusage, Int>) -> String {
        let b = baseline[keyPath: stat], c = current[keyPath: stat]
        return "\(c) - \(b) = \(c - b)"
      }
      print("""
                MAX_RSS \(deltaEquation(\rusage.ru_maxrss)) (\(pages) pages)
                ICS \(deltaEquation(\rusage.ru_nivcsw))
                VCS \(deltaEquation(\rusage.ru_nvcsw))
            """)
    }
    return maxRSS
  }


    if (spent + nextSampleEstimate < schedulerQuantum) {
        start = timer.getTime()
    } else {
        logVerbose("    Yielding again after estimated \(spent/1000) us")
        let now = yield()
        (start, lastYield) = (now, now)
    }
