/** * {@inheritdoc} */ 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)); }
/** * {@inheritdoc} */ public function launch(Payload $payload, Iteration $iteration, Config $options) { $phpConfig = ['max_execution_time' => 0]; $payload->setPhpConfig($phpConfig); $result = $payload->launch(); if (isset($result['buffer']) && $result['buffer']) { throw new \RuntimeException(sprintf('Benchmark made some noise: %s', $result['buffer'])); } $iteration->setResult(new TimeResult($result['time'])); $iteration->setResult(MemoryResult::fromArray($result['mem'])); }