cvs: php-benchmarks /benchcli/misc cachegrindparser.php

From: Date: Wed, 17 Jun 2009 12:49:56 +0000
Subject: cvs: php-benchmarks /benchcli/misc cachegrindparser.php
Groups: php.qa 
Request: Send a blank email to php-qa+get-65100@lists.php.net to get a copy of this message
hjalle Wed Jun 17 12:49:56 2009 UTC Added files: /php-benchmarks/benchcli/misc cachegrindparser.php Log: Beginning of cachegrind parser http://cvs.php.net/viewvc.cgi/php-benchmarks/benchcli/misc/cachegrindparser.php?view=markup&rev=1.1 Index: php-benchmarks/benchcli/misc/cachegrindparser.php +++ php-benchmarks/benchcli/misc/cachegrindparser.php <?php class Cachegrindparser { /** * Parses the returning string from a cachegrind call * * @param string $text The text to parse * * @return array An array of the results. */ function parse($text) { $match_names = array ( "instruction" , "instruction_l1_miss" , "instruction_l2_miss" , "data" , "data_read" , "data_write" , "data_l1_miss" , "data_l1_miss_read" , "data_l1_miss_write" , "data_l2_miss" , "data_l2_miss_read" , "data_l2_miss_write" , "l2" , "l2_read" , "l2_write" , "l2_miss" , "l2_miss_read" , "l2_miss_write" , "branch" , "branch_conditional" , "branch_indirect" , "branch_misprediction" , "branch_conditional_misprediction" , "branch_indirect_misprediction"); $start = "^==\d+=="; $middle = ":\s+"; $number = "([0-9,]+)"; $rw = "\s*\(\s*$number rd\s*\+\s*$number wr\)"; $branch_rw = "\s*\(\s*$number cond\s*\+\s*$number ind\)"; $end = "$."; preg_match("/" ."$start I\s+refs$middle$number$end" ."$start I1\s+misses$middle$number$end" ."$start L2i\s+misses$middle$number$end" .".*" ."$start D\s+refs$middle$number$rw$end" ."$start D1\s+misses$middle$number$rw$end" ."$start L2d\s+misses$middle$number$rw$end" .".*" ."$start L2\s+refs$middle$number$rw$end" ."$start L2\s+misses$middle$number$rw$end" .".*" ."$start Branches$middle$number$branch_rw$end" ."$start Mispredicts$middle$number$branch_rw$end" ."/ms", $text, $matches); array_shift($matches); // strip off the // remove commas foreach ($matches as &$match) { $match = preg_replace("/,/", "", $match); } unset($match); // remove the reference from match // make key-value pairs $results = array_combine($match_names, $matches); return $results; } } ?>

« previous php.qa (#65100) next »