/**
  * Make measurements for each ValueObject given.
  * Return a Result object.
  *
  * @param ValueObject[] $valueObjects
  *
  * @return Result
  */
 public function measureAll($valueObjects)
 {
     // init result
     $result = new Result();
     $result->setReference($this->getName());
     $result->setIterations(count($valueObjects));
     // init start values
     $min = 9999999999999999;
     $max = 0;
     $total = 0;
     // make test for each value object
     foreach ($valueObjects as $valueObject) {
         $time = $this->measure($valueObject);
         $min = $min < $time ? $min : $time;
         $max = $max > $time ? $max : $time;
         $total += $time;
     }
     // save results in object
     $result->setAvg($total / count($valueObjects));
     $result->setMin($min);
     $result->setMax($max);
     return $result;
 }
 /**
  * Print the result
  *
  * @param Result $result
  * @param OutputInterface $output
  * @param bool $showMinMax
  */
 protected function printResult(Result $result, OutputInterface $output, $showMinMax = false)
 {
     $output->writeln(sprintf("\nResult for:\t%s", $result->getReference()));
     if ($showMinMax) {
         $output->writeln(sprintf("Min. time:\t%01.3f ms\t%01.0f%%", $result->getMin() * 1000, $result->getMinPercentage()));
         $output->writeln(sprintf("Max. time:\t%01.3f ms\t%01.0f%%", $result->getMax() * 1000, $result->getMaxPercentage()));
     }
     $output->writeln(sprintf("Avg. time:\t%01.3f ms\t%01.0f%%", $result->getAvg() * 1000, $result->getAvgPercentage()));
 }