private function benchmarkQueryResultSerialization($queryResult) { if (!$queryResult instanceof QueryResult || $queryResult->getCount() == 0) { $this->benchmarkRunner->addMessage("- S: no serialization"); return; } $this->benchmarkRunner->getBenchmarker()->clear(); $memoryBefore = memory_get_peak_usage(false); for ($i = 0; $i < $this->repetitionExecutionThreshold; $i++) { $start = microtime(true); $queryResult->toArray(); $this->benchmarkRunner->getBenchmarker()->addBenchmarkPoint(microtime(true) - $start); } $memoryAfter = memory_get_peak_usage(false); $memoryDiff = $memoryAfter - $memoryBefore; $sum = $this->benchmarkRunner->getBenchmarker()->getSum(); $mean = $this->benchmarkRunner->getBenchmarker()->getMean(); $sd = $this->benchmarkRunner->getBenchmarker()->getStandardDeviation(); $norm = $this->benchmarkRunner->getBenchmarker()->getNormalizedValueBy($queryResult->getCount()); $this->benchmarkSummaryContainer['(t) serialize'][] = $mean; $this->benchmarkSummaryContainer['(n) serialize'][] = $norm; $this->benchmarkRunner->addMessage("- S: {$mean} (mean) {$sum} (total) {$sd} (sd) (sec)"); if ($this->showMemoryUsage) { $this->benchmarkRunner->addMessage("+- Memory: {$memoryBefore} (before) {$memoryAfter} (after) {$memoryDiff} (diff)"); } }
private function createJobQueueBenchmarks($job) { $jobQueueRunner = $this->runnerFactory->newJobQueueRunner($job); $this->benchmarkRunner->getBenchmarker()->clear(); $memoryBefore = memory_get_peak_usage(false); for ($i = 0; $i < $this->repetitionExecutionThreshold; $i++) { $start = microtime(true); $jobQueueRunner->run(); $this->benchmarkRunner->getBenchmarker()->addBenchmarkPoint(microtime(true) - $start); } $memoryAfter = memory_get_peak_usage(false); $memoryDiff = $memoryAfter - $memoryBefore; $sum = $this->benchmarkRunner->getBenchmarker()->getSum(); $mean = $this->benchmarkRunner->getBenchmarker()->getMean(); $norm = $this->benchmarkRunner->getBenchmarker()->getNormalizedValueBy($job === 'SMW\\RefreshJob' ? 1 : $this->pageCopyThreshold); $this->benchmarkRunner->addMessage("- {$job}: {$norm} (n) {$mean} (mean) {$sum} (total) (sec)"); if ($this->showMemoryUsage) { $this->benchmarkRunner->addMessage("+- Memory: {$memoryBefore} (before) {$memoryAfter} (after) {$memoryDiff} (diff)"); } }
private function createMaintenanceBenchmarks($maintenanceScript) { $maintenanceRunner = $this->runnerFactory->newMaintenanceRunner($maintenanceScript); $maintenanceRunner->setQuiet(); $maintenanceRunner->setOptions(array('f' => $this->fullDelete)); $this->benchmarkRunner->getBenchmarker()->clear(); $memoryBefore = memory_get_peak_usage(false); for ($i = 0; $i < $this->repetitionExecutionThreshold; $i++) { $start = microtime(true); $maintenanceRunner->run(); $this->benchmarkRunner->getBenchmarker()->addBenchmarkPoint(microtime(true) - $start); } $memoryAfter = memory_get_peak_usage(false); $memoryDiff = $memoryAfter - $memoryBefore; $sum = $this->benchmarkRunner->getBenchmarker()->getSum(); $mean = $this->benchmarkRunner->getBenchmarker()->getMean(); $norm = $this->benchmarkRunner->getBenchmarker()->getNormalizedValueBy($this->pageCopyThreshold); $this->benchmarkRunner->addMessage("- {$maintenanceScript}: {$norm} (n) {$mean} (mean) {$sum} (total) (sec)"); if ($this->showMemoryUsage) { $this->benchmarkRunner->addMessage("+- Memory: {$memoryBefore} (before) {$memoryAfter} (after) {$memoryDiff} (diff)"); } }
/** * @test */ public function doBenchmark() { $dataset = 'ExtendedLoremIpsumDataset.v2.xml'; $this->benchmarkRunner->addMessage("\n" . '=========================================================================================='); $this->benchmarkRunner->addMessage('Edit benchmarks (Lorem donec = [[::]]; Lorem enim = #subobject; Lorem sit = #set/template) '); $this->benchmarkRunner->addMessage('------------------------------------------------------------------------------------------'); $this->benchmarkRunner->addMessage("- Dataset: " . $dataset); $this->benchmarkRunner->addMessage("- MediaWiki: " . $this->benchmarkRunner->getMediaWikiVersion()); $this->benchmarkRunner->addMessage("- Store: " . $this->benchmarkRunner->getQueryEngine()); $this->benchmarkRunner->addMessage("- ShowMemoryUsage: " . var_export($this->showMemoryUsage, true)); $this->benchmarkRunner->addMessage("- PageEditThreshold: " . $this->pageEditThreshold); $this->benchmarkRunner->addMessage('------------------------------------------------------------------------------------------'); $this->benchmarkRunner->doImportDataset($dataset); $this->benchmarkRunner->addMessage('------------------------------------------------------------------------------------------'); // Standard annotation $datasetFixture = Title::newFromText('Lorem donec'); $this->assertTrue($datasetFixture->exists()); $this->benchmarkRunner->editPageContent($datasetFixture, $this->pageEditThreshold); // Subobject annotation $datasetFixture = Title::newFromText('Lorem enim'); $this->assertTrue($datasetFixture->exists()); $this->benchmarkRunner->editPageContent($datasetFixture, $this->pageEditThreshold); // Template $datasetFixture = Title::newFromText('Lorem sit'); $this->assertTrue($datasetFixture->exists()); $this->benchmarkRunner->editPageContent($datasetFixture, $this->pageEditThreshold); // Queries $datasetFixture = Title::newFromText('Lorem tempor'); $this->assertTrue($datasetFixture->exists()); $this->benchmarkRunner->editPageContent($datasetFixture, $this->pageEditThreshold); $this->benchmarkRunner->addMessage('=========================================================================================='); $this->benchmarkRunner->printMessages(); }
/** * @test */ public function doBenchmark() { $dataset = $this->benchmarkRunner->getDefaultDataset(); $this->benchmarkRunner->addMessage("\n" . '=========================================================================================='); $this->benchmarkRunner->addMessage('Dataset import benchmarks'); $this->benchmarkRunner->addMessage('------------------------------------------------------------------------------------------'); $this->benchmarkRunner->addMessage("- Dataset: " . $dataset); $this->benchmarkRunner->addMessage("- MediaWiki: " . $this->benchmarkRunner->getMediaWikiVersion()); $this->benchmarkRunner->addMessage("- Store: " . $this->benchmarkRunner->getQueryEngine()); $this->benchmarkRunner->addMessage("- ShowMemoryUsage: " . var_export($this->showMemoryUsage, true)); $this->benchmarkRunner->addMessage("- ReuseDatasets: " . var_export($this->reuseDatasets, true)); $this->benchmarkRunner->addMessage("- PageCopyThreshold: " . $this->pageCopyThreshold); $this->benchmarkRunner->addMessage('------------------------------------------------------------------------------------------'); $this->benchmarkRunner->doImportDataset($dataset); $datasetFixture = Title::newFromText('Lorem ipsum'); $this->assertTrue($datasetFixture->exists()); $this->benchmarkRunner->copyPageContent($datasetFixture, $this->pageCopyThreshold); $this->benchmarkRunner->addMessage('=========================================================================================='); $this->benchmarkRunner->printMessages(); }