| Index: dart/site/try/poi/poi.dart
|
| diff --git a/dart/site/try/poi/poi.dart b/dart/site/try/poi/poi.dart
|
| index 5b80277d7235c81f54379b0ceba17dcadfdd412c..603a5a6e27cd1374703cb704369e1f30bfa573bf 100644
|
| --- a/dart/site/try/poi/poi.dart
|
| +++ b/dart/site/try/poi/poi.dart
|
| @@ -98,6 +98,8 @@ bool isVerbose = false;
|
| const bool PRINT_SCOPE_INFO =
|
| const bool.fromEnvironment('PRINT_SCOPE_INFO', defaultValue: true);
|
|
|
| +Stopwatch wallClock = new Stopwatch();
|
| +
|
| /// Iterator for reading lines from [io.stdin].
|
| class StdinIterator implements Iterator<String> {
|
| String current;
|
| @@ -108,6 +110,24 @@ class StdinIterator implements Iterator<String> {
|
| }
|
| }
|
|
|
| +printFormattedTime(message, int us) {
|
| + String m = '$message${" " * 65}'.substring(0, 60);
|
| + String i = '${" " * 10}${(us/1000).toStringAsFixed(3)}';
|
| + i = i.substring(i.length - 10);
|
| + print('$m ${i}ms');
|
| +}
|
| +
|
| +printWallClock(message) {
|
| + if (!isVerbose) return;
|
| + if (wallClock.isRunning) {
|
| + print('$message');
|
| + printFormattedTime('--->>>', wallClock.elapsedMicroseconds);
|
| + wallClock.reset();
|
| + } else {
|
| + print(message);
|
| + }
|
| +}
|
| +
|
| printVerbose(message) {
|
| if (!isVerbose) return;
|
| print(message);
|
| @@ -115,6 +135,7 @@ printVerbose(message) {
|
|
|
| main(List<String> arguments) {
|
| poiCount = 0;
|
| + wallClock.start();
|
| List<String> nonOptionArguments = [];
|
| for (String argument in arguments) {
|
| if (argument.startsWith('-')) {
|
| @@ -231,11 +252,17 @@ Future parseUserInput(
|
| api.CompilerInputProvider inputProvider,
|
| api.DiagnosticHandler handler) {
|
| Future repeat() {
|
| + printFormattedTime('--->>>', wallClock.elapsedMicroseconds);
|
| + wallClock.reset();
|
| +
|
| return prompt('Position: ').then((String positionString) {
|
| + wallClock.reset();
|
| return parseUserInput(fileName, positionString, inputProvider, handler);
|
| });
|
| }
|
|
|
| + printWallClock("\n\n\nparseUserInput('$fileName', '$positionString')");
|
| +
|
| Uri script = Uri.base.resolveUri(new Uri.file(fileName));
|
| if (positionString == null) return null;
|
| int position = int.parse(
|
| @@ -255,8 +282,9 @@ Future parseUserInput(
|
|
|
| Future future = runPoi(script, position, inputProvider, handler);
|
| return future.then((Element element) {
|
| - poiCount++;
|
| - print('Resolving took ${sw.elapsedMicroseconds}us.');
|
| + if (isVerbose) {
|
| + printFormattedTime('Resolving took', sw.elapsedMicroseconds);
|
| + }
|
| sw.reset();
|
| String info = scopeInformation(element, position);
|
| sw.stop();
|
| @@ -417,6 +445,9 @@ class ScriptOnlyFilter implements QueueFilter {
|
| void processWorkItem(void f(WorkItem work), WorkItem work) {
|
| if (work.element.library.canonicalUri == script) {
|
| f(work);
|
| + printWallClock('Processed ${work.element}.');
|
| + } else {
|
| + printWallClock('Skipped ${work.element}.');
|
| }
|
| }
|
| }
|
|
|