Path: blob/master/src/applications/console/plugin/DarkConsoleStartupPlugin.php
13402 views
<?php12final class DarkConsoleStartupPlugin extends DarkConsolePlugin {34public function getName() {5return pht('Startup');6}78public function getDescription() {9return pht('Timing information about the startup sequence.');10}1112/**13* @phutil-external-symbol class PhabricatorStartup14*/15public function generateData() {16return PhabricatorStartup::getPhases();17}1819public function renderPanel() {20$data = $this->getData();2122// Compute the time offset and duration of each startup phase.23$prev_key = null;24$init = null;25$phases = array();26foreach ($data as $key => $value) {27if ($init === null) {28$init = $value;29}3031$offset = (int)floor(1000 * ($value - $init));3233$phases[$key] = array(34'time' => $value,35'offset' => $value - $init,36);373839if ($prev_key !== null) {40$phases[$prev_key]['duration'] = $value - $phases[$prev_key]['time'];41}42$prev_key = $key;43}4445// Render the phases.46$rows = array();47foreach ($phases as $key => $phase) {48$offset_ms = (int)floor(1000 * $phase['offset']);4950if (isset($phase['duration'])) {51$duration_us = (int)floor(1000000 * $phase['duration']);52} else {53$duration_us = null;54}5556$rows[] = array(57$key,58pht('+%s ms', new PhutilNumber($offset_ms)),59($duration_us === null)60? pht('-')61: pht('%s us', new PhutilNumber($duration_us)),62null,63);64}6566return id(new AphrontTableView($rows))67->setHeaders(68array(69pht('Phase'),70pht('Offset'),71pht('Duration'),72null,73))74->setColumnClasses(75array(76'',77'n right',78'n right',79'wide',80));81}8283}848586