示例#1
0
 /**
  * Start test timers.
  */
 public function startTest(PHPUnit_Framework_Test $test)
 {
     self::$currentTestStart = microtime(true);
     $name = $test->getName();
     if (!isset(self::$tests[$name])) {
         self::$tests[$name] = array('runs' => 0, 'totalTime' => 0);
     }
 }
if (!isset($suiteName)) {
    require_once HASHMARK_ROOT_DIR . '/Test/AllTests.php';
    $suiteName = 'Hashmark_AllTests';
}
/**
 * For Hashmark_TestListener_Benchmark static data/methods.
 */
require_once HASHMARK_ROOT_DIR . '/Test/Listener/Benchmark.php';
define('HASHMARK_BENCHMARK_PRECISION', 4);
define('HASHMARK_BENCHMARK_RANKLIMIT', 15);
$suite = new PHPUnit_Framework_TestSuite('Hashmark Test Benchmark');
$suite->addTestSuite($suiteName);
$result = new PHPUnit_Framework_TestResult();
$result->addListener(new Hashmark_TestListener_Benchmark());
$suite->run($result);
$results = Hashmark_TestListener_Benchmark::getResults();
$totalTime = 0;
$sortedSuites = array();
foreach ($results['suites'] as $name => $stats) {
    // Skip wrappers.
    if ($name != 'Hashmark Test Benchmark' && false === strpos($name, '::suite')) {
        // Use average for tests are ran on multiple implementation classes.
        $sortedSuites[$name] = $stats['totalTime'] / $stats['runs'];
        $totalTime += $stats['totalTime'];
    }
}
arsort($sortedSuites);
echo "\nTop Suites\n\n";
foreach (array_slice($sortedSuites, 0, HASHMARK_BENCHMARK_RANKLIMIT) as $name => $avg) {
    $avg = sprintf('%0.' . HASHMARK_BENCHMARK_PRECISION . 'f', round($avg, HASHMARK_BENCHMARK_PRECISION));
    echo "{$name}: {$avg}\n";