private function runSubject(ExecutorInterface $executor, RunnerContext $context, SubjectMetadata $subject, \DOMElement $subjectEl) { $parameterSets = $context->getParameterSets($subject->getParameterSets()); $paramsIterator = new CartesianParameterIterator($parameterSets); foreach ($paramsIterator as $parameterSet) { $variantEl = $subjectEl->ownerDocument->createElement('variant'); $variantEl->setAttribute('sleep', $context->getSleep($subject->getSleep())); $variantEl->setAttribute('output-time-unit', $subject->getOutputTimeUnit() ?: TimeUnit::MICROSECONDS); $variantEl->setAttribute('output-mode', $subject->getOutputMode() ?: TimeUnit::MODE_TIME); $variantEl->setAttribute('revs', $context->getRevolutions($subject->getRevs())); $variantEl->setAttribute('warmup', $context->getWarmup($subject->getWarmup())); foreach ($parameterSet as $name => $value) { $parameterEl = $this->createParameter($subjectEl, $name, $value); $variantEl->appendChild($parameterEl); } $subjectEl->appendChild($variantEl); $this->runIterations($executor, $context, $subject, $parameterSet, $variantEl); } }
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; }