From 33309509c760cea0eff9f48b3242cc08248ad434 Mon Sep 17 00:00:00 2001 From: Benoit Jacquemont Date: Mon, 13 Aug 2018 15:57:11 +0200 Subject: [PATCH 1/2] Prepare v1.0.3 changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d098aa0..216cb77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 1.0.4 Ygramul (2018-08-13) + - [GITHUB-75](https://github.com/BitOne/php-meminfo/issues/75) Now goes through static members of classes as well the usual frame execution browsing. + # 1.0.3 Ygramul (2018-08-13) - [GITHUB-76](https://github.com/BitOne/php-meminfo/issues/76) Fixes wrong non matching item reference from children, introduced in v1.0.2 From 8854a150c8447ca9fe2434268ca8a34aee430d71 Mon Sep 17 00:00:00 2001 From: Olivier Soulet Date: Tue, 28 Aug 2018 12:37:11 +0200 Subject: [PATCH 2/2] add sorters for the summary command --- .../PhpMemInfo/Analyzer/SummaryCreator.php | 32 ++++++++++++------- .../Console/Command/SummaryCommand.php | 18 ++++++++++- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/analyzer/src/BitOne/PhpMemInfo/Analyzer/SummaryCreator.php b/analyzer/src/BitOne/PhpMemInfo/Analyzer/SummaryCreator.php index d44aeba..01f5d32 100644 --- a/analyzer/src/BitOne/PhpMemInfo/Analyzer/SummaryCreator.php +++ b/analyzer/src/BitOne/PhpMemInfo/Analyzer/SummaryCreator.php @@ -27,9 +27,11 @@ public function __construct(array $items) * Create a summary from the existing items, * aggregated by type/class and sorted by count. * + * @param array $sorters + * * @return array */ - public function createSummary() + public function createSummary($sorters) { $summary = []; @@ -45,19 +47,25 @@ public function createSummary() $summary[$type]['self_size']+= $item['size']; } - uasort($summary, function ($a, $b) { - $aCount = $a['count']; - $bCount = $b['count']; + uasort($summary, function ($a, $b) use ($sorters) { + $aCount = $a[$sorters['column']]; + $bCount = $b[$sorters['column']]; + + if ($a === $b) { + return 0; + } + + $comp = $a[$sorters['column']] > $b[$sorters['column']]; + if ($sorters['order'] === 'asc') { + $comp = $a[$sorters['column']] < $b[$sorters['column']]; + } - if ($a === $b) { - return 0; - } - if ($a['count'] > $b['count']) { - return -1; - } else { - return 1; - } + if ($comp) { + return -1; + } else { + return 1; } + } ); return $summary; diff --git a/analyzer/src/BitOne/PhpMemInfo/Console/Command/SummaryCommand.php b/analyzer/src/BitOne/PhpMemInfo/Console/Command/SummaryCommand.php index c5f2344..e2df73b 100644 --- a/analyzer/src/BitOne/PhpMemInfo/Console/Command/SummaryCommand.php +++ b/analyzer/src/BitOne/PhpMemInfo/Console/Command/SummaryCommand.php @@ -33,6 +33,18 @@ protected function configure() 'dump-file', InputArgument::REQUIRED, 'PHP Meminfo Dump File in JSON format' + ) + ->addOption( + 'column-to-sort', + null, + InputOption::VALUE_REQUIRED, + 'The column to sort ("count" or "self_size")' + ) + ->addOption( + 'order-to-sort', + null, + InputOption::VALUE_REQUIRED, + 'The order to sort ("asc" or "desc")' ); } @@ -42,6 +54,8 @@ protected function configure() protected function execute(InputInterface $input, OutputInterface $output) { $dumpFilename = $input->getArgument('dump-file'); + $columnToSort = $input->getOption('column-to-sort') ? $input->getOption('column-to-sort') : 'count'; + $orderToSort = $input->getOption('order-to-sort'); $loader = new Loader(); @@ -49,7 +63,9 @@ protected function execute(InputInterface $input, OutputInterface $output) $summaryCreator = new SummaryCreator($items); - $summary = $summaryCreator->createSummary(); + $sorters = ['column' => $columnToSort, 'order' => $orderToSort]; + + $summary = $summaryCreator->createSummary($sorters); $table = new Table($output); $this->formatTable($summary, $table);