public function execute(SubjectMetadata $subjectMetadata, Iteration $iteration, Config $config)
{
// add 100 bytes of memory.
$memory = 100;
$iteration->setResult(new MemoryResult($memory, $memory, $memory));
if (!$config['times']) {
$iteration->setResult(new TimeResult(0));
return;
}
$variantHash = spl_object_hash($iteration->getVariant());
if (!isset($this->variantTimes[$variantHash])) {
$this->variantTimes[$variantHash] = $config['times'];
}
if (!isset($this->variantTimes[$variantHash][$this->index])) {
$this->index = 0;
}
$time = $this->variantTimes[$variantHash][$this->index];
$this->index++;
if ($config['spread']) {
$index = $iteration->getIndex() % count($config['spread']);
$spreadDiff = $config['spread'][$index];
$time = $time + $spreadDiff;
}
$iteration->setResult(new TimeResult($time));
}