private function processSubject(Subject $subject, \DOMElement $benchmarkEl) { $subjectEl = $benchmarkEl->appendElement('subject'); $subjectEl->setAttribute('name', $subject->getName()); foreach ($subject->getGroups() as $group) { $groupEl = $subjectEl->appendElement('group'); $groupEl->setAttribute('name', $group); } foreach ($subject->getVariants() as $variant) { $this->processVariant($subject, $variant, $subjectEl); } }
private function runSubject(ExecutorInterface $executor, RunnerContext $context, Subject $subject, SubjectMetadata $subjectMetadata) { $parameterSets = $context->getParameterSets($subjectMetadata->getParameterSets()); $paramsIterator = new CartesianParameterIterator($parameterSets); // create the variants. foreach ($paramsIterator as $parameterSet) { foreach ($subjectMetadata->getIterations() as $nbIterations) { foreach ($subjectMetadata->getRevs() as $revolutions) { foreach ($subjectMetadata->getWarmup() as $warmup) { $variant = $subject->createVariant($parameterSet, $revolutions, $warmup); $variant->spawnIterations($nbIterations); } } } } // run the variants. foreach ($subject->getVariants() as $variant) { $this->runVariant($executor, $context, $subjectMetadata, $variant); } return $subject; }