protected function BaseParser::initMetrics in XHProf 8
Parameters
$symbols: All profiled symbols.
$symbol: Set this to show the parent-child report.
$sort: Metric used to sort.
1 call to BaseParser::initMetrics()
- BaseParser::__construct in src/
XHProfLib/ Parser/ BaseParser.php
File
- src/
XHProfLib/ Parser/ BaseParser.php, line 67
Class
- BaseParser
- Class BaseReport
Namespace
Drupal\xhprof\XHProfLib\ParserCode
protected function initMetrics($symbols, $symbol, $sort) {
if (!empty($sort)) {
if (array_key_exists($sort, ReportConstants::getSortableColumns())) {
$this->sort_col = $sort;
}
else {
print "Invalid Sort Key {$sort} specified in URL";
}
}
// For C++ profiler runs, walltime attribute isn't present.
// In that case, use "samples" as the default sort column.
$wt = $this->mainSymbol
->getWt();
if (!isset($wt)) {
if ($this->sort_col == "wt") {
$this->sort_col = "samples";
}
// C++ profiler data doesn't have call counts.
// ideally we should check to see if "ct" metric
// is present for "main()". But currently "ct"
// metric is artificially set to 1. So, relying
// on absence of "wt" metric instead.
$this->display_calls = FALSE;
}
else {
$this->display_calls = TRUE;
}
// parent/child report doesn't support exclusive times yet.
// So, change sort hyperlinks to closest fit.
if (!empty($symbol)) {
$this->sort_col = str_replace("excl_", "", $this->sort_col);
}
if ($this->display_calls) {
$this->stats = [
"fn",
"ct",
"Calls%",
];
}
else {
$this->stats = [
"fn",
];
}
$this->pc_stats = $this->stats;
$possible_metrics = $this
->getPossibleMetrics($symbols);
foreach ($possible_metrics as $metric => $desc) {
$mainMetric = $this->mainSymbol
->getMetric($metric);
if (isset($mainMetric)) {
$metrics[] = $metric;
// flat (top-level reports): we can compute
// exclusive metrics reports as well.
$this->stats[] = $metric;
$this->stats[] = "I" . $desc[0] . "%";
$this->stats[] = "excl_" . $metric;
$this->stats[] = "E" . $desc[0] . "%";
// parent/child report for a function: we can
// only breakdown inclusive times correctly.
$this->pc_stats[] = $metric;
$this->pc_stats[] = "I" . $desc[0] . "%";
}
}
}