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);
}
}