Skip to content

Commit 7551754

Browse files
committed
Add timing debug messages
1 parent 98ea887 commit 7551754

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/Plugin.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
use function array_merge;
2828
use function file_put_contents;
2929
use function is_string;
30+
use function microtime;
3031
use function spl_autoload_register;
32+
use function sprintf;
3133
use function var_export;
3234

3335
use const ARRAY_FILTER_USE_BOTH;
@@ -86,9 +88,11 @@ public static function onPostAutoloadDump(Event $event): void
8688
assert(is_string($vendorDir));
8789
$filepath = "$vendorDir/attributes.php";
8890

91+
$start = microtime(true);
8992
$io->write('<info>Generating attributes file</info>');
9093
self::dump($event->getComposer(), $io, $filepath);
91-
$io->write('<info>Generated attributes file</info>');
94+
$elapsed = self::renderElapsedTime($start);
95+
$io->write("<info>Generated attributes file in $elapsed</info>");
9296
}
9397

9498
public static function dump(
@@ -101,24 +105,46 @@ public static function dump(
101105
$autoloadsBuilder ??= new AutoloadsBuilder();
102106
$classMapBuilder ??= new ClassMapBuilder();
103107

108+
$start = microtime(true);
104109
$autoloads = $autoloadsBuilder->buildAutoloads($composer);
110+
$elapsed = self::renderElapsedTime($start);
111+
$io->debug("Generating attributes file: built autoloads in $elapsed");
112+
113+
$start = microtime(true);
105114
$classMap = $classMapBuilder->buildClassMap($autoloads);
115+
$elapsed = self::renderElapsedTime($start);
116+
$io->debug("Generating attributes file: built class map in $elapsed");
106117

107118
self::setupAutoload($classMap);
108119

120+
$start = microtime(true);
109121
$filter = self::buildClassMapFilter($composer);
110122
$classMap = array_filter(
111123
$classMap,
112124
fn ($class, $filepath) => $filter->filter($class, $filepath, $io),
113125
ARRAY_FILTER_USE_BOTH
114126
);
127+
$elapsed = self::renderElapsedTime($start);
128+
$io->debug("Generating attributes file: filtered class map in $elapsed");
115129

130+
$start = microtime(true);
116131
$collection = self::collectAttributes($classMap, $io);
132+
$elapsed = self::renderElapsedTime($start);
133+
$io->debug("Generating attributes file: collected attributes in $elapsed");
134+
135+
$start = microtime(true);
117136
$code = self::render($collection);
137+
$elapsed = self::renderElapsedTime($start);
138+
$io->debug("Generating attributes file: rendered code in $elapsed");
118139

119140
file_put_contents($filepath, $code);
120141
}
121142

143+
private static function renderElapsedTime(float $start): string
144+
{
145+
return sprintf("%.03f ms", (microtime(true) - $start) * 1000);
146+
}
147+
122148
/**
123149
* @param array<class-string, non-empty-string> $classMap
124150
*/

0 commit comments

Comments
 (0)