PhpBench\Benchmark\Runner::runBenchmark PHP Method

runBenchmark() private method

private runBenchmark ( PhpBench\Benchmark\ExecutorInterface $executor, RunnerContext $context, Benchmark $benchmark, BenchmarkMetadata $benchmarkMetadata )
$executor PhpBench\Benchmark\ExecutorInterface
$context RunnerContext
$benchmark PhpBench\Model\Benchmark
$benchmarkMetadata PhpBench\Benchmark\Metadata\BenchmarkMetadata
    private function runBenchmark(ExecutorInterface $executor, RunnerContext $context, Benchmark $benchmark, BenchmarkMetadata $benchmarkMetadata)
    {
        if ($benchmarkMetadata->getBeforeClassMethods()) {
            $executor->executeMethods($benchmarkMetadata, $benchmarkMetadata->getBeforeClassMethods());
        }
        // the keys are subject names, convert them to numerical indexes.
        $subjectMetadatas = array_filter($benchmarkMetadata->getSubjects(), function ($subjectMetadata) {
            if ($subjectMetadata->getSkip()) {
                return false;
            }
            return true;
        });
        $subjectMetadatas = array_values($subjectMetadatas);
        foreach ($subjectMetadatas as $subjectMetadata) {
            // override parameters
            $subjectMetadata->setIterations($context->getIterations($subjectMetadata->getIterations()));
            $subjectMetadata->setRevs($context->getRevolutions($subjectMetadata->getRevs()));
            $subjectMetadata->setWarmup($context->getWarmup($subjectMetadata->getWarmUp()));
            $subjectMetadata->setSleep($context->getSleep($subjectMetadata->getSleep()));
            $subjectMetadata->setRetryThreshold($context->getRetryThreshold($this->retryThreshold));
            $benchmark->createSubjectFromMetadata($subjectMetadata);
        }
        $this->logger->benchmarkStart($benchmark);
        foreach ($benchmark->getSubjects() as $index => $subject) {
            $subjectMetadata = $subjectMetadatas[$index];
            $this->logger->subjectStart($subject);
            $this->runSubject($executor, $context, $subject, $subjectMetadata);
            $this->logger->subjectEnd($subject);
        }
        $this->logger->benchmarkEnd($benchmark);
        if ($benchmarkMetadata->getAfterClassMethods()) {
            $executor->executeMethods($benchmarkMetadata, $benchmarkMetadata->getAfterClassMethods());
        }
    }