Index: pkg/analyzer_cli/tool/perf.dart |
diff --git a/pkg/analyzer_cli/tool/perf.dart b/pkg/analyzer_cli/tool/perf.dart |
index 786c1e1c291c081ae3d3346f6b740859939c8dc3..3c97e23e4f4288d8612d3cc01a65a1013f08501a 100644 |
--- a/pkg/analyzer_cli/tool/perf.dart |
+++ b/pkg/analyzer_cli/tool/perf.dart |
@@ -6,22 +6,22 @@ |
library analyzer_cli.tool.perf; |
import 'dart:io' show exit; |
+ |
import 'package:analyzer/dart/ast/ast.dart'; |
import 'package:analyzer/dart/ast/token.dart'; |
-import 'package:analyzer/file_system/file_system.dart' |
- show ResourceProvider, ResourceUriResolver |
- hide File; |
+import 'package:analyzer/error/listener.dart'; |
+import 'package:analyzer/file_system/file_system.dart' show ResourceUriResolver; |
import 'package:analyzer/file_system/physical_file_system.dart' |
show PhysicalResourceProvider; |
+import 'package:analyzer/source/package_map_resolver.dart'; |
+import 'package:analyzer/src/context/builder.dart'; |
import 'package:analyzer/src/dart/scanner/reader.dart'; |
import 'package:analyzer/src/dart/scanner/scanner.dart'; |
import 'package:analyzer/src/dart/sdk/sdk.dart' show FolderBasedDartSdk; |
-import 'package:analyzer/src/error.dart'; |
-import 'package:analyzer/src/generated/error.dart'; |
-import 'package:analyzer/src/generated/java_io.dart' show JavaFile; |
import 'package:analyzer/src/generated/parser.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/generated/source_io.dart'; |
+import 'package:package_config/discovery.dart'; |
/// Cummulative total number of chars scanned. |
int scanTotalChars = 0; |
@@ -34,14 +34,14 @@ SourceFactory sources; |
main(args) { |
// TODO(sigmund): provide sdk folder as well. |
- if (args.length < 2) { |
+ if (args.length < 3) { |
print('usage: perf.dart <bench-id> <package-root> <entry.dart>'); |
exit(1); |
} |
var totalTimer = new Stopwatch()..start(); |
var bench = args[0]; |
- var packageRoot = args[1]; |
+ var packageRoot = Uri.base.resolve(args[1]); |
var entryUri = Uri.base.resolve(args[2]); |
setup(packageRoot); |
@@ -57,16 +57,18 @@ main(args) { |
} |
totalTimer.stop(); |
- report("Total", totalTimer.elapsedMicroseconds); |
+ report("total", totalTimer.elapsedMicroseconds); |
} |
/// Sets up analyzer to be able to load and resolve app, packages, and sdk |
/// sources. |
-void setup(String packageRoot) { |
+void setup(Uri packageRoot) { |
var provider = PhysicalResourceProvider.INSTANCE; |
+ var packageMap = new ContextBuilder(provider, null, null) |
+ .convertPackagesToMap(getPackagesDirectory(packageRoot)); |
sources = new SourceFactory([ |
new ResourceUriResolver(provider), |
- new PackageUriResolver([new JavaFile(packageRoot)]), |
+ new PackageMapUriResolver(provider, packageMap), |
new DartUriResolver( |
new FolderBasedDartSdk(provider, provider.getFolder("sdk"))), |
]); |
@@ -92,8 +94,8 @@ Set<Source> scanReachableFiles(Uri entryUri) { |
print('input size: ${scanTotalChars} chars'); |
var loadTime = loadTimer.elapsedMicroseconds - scanTimer.elapsedMicroseconds; |
- report("Loader", loadTime); |
- report("Scanner", scanTimer.elapsedMicroseconds); |
+ report("load", loadTime); |
+ report("scan", scanTimer.elapsedMicroseconds); |
return files; |
} |
@@ -114,10 +116,10 @@ void parseFiles(Set<Source> files) { |
// Report size and scanning time again. See discussion above. |
if (old != scanTotalChars) print('input size changed? ${old} chars'); |
- report("Scanner", scanTimer.elapsedMicroseconds); |
+ report("scan", scanTimer.elapsedMicroseconds); |
var pTime = parseTimer.elapsedMicroseconds - scanTimer.elapsedMicroseconds; |
- report("Parser", pTime); |
+ report("parse", pTime); |
} |
/// Add to [files] all sources reachable from [start]. |
@@ -125,9 +127,10 @@ void collectSources(Source start, Set<Source> files) { |
if (!files.add(start)) return; |
var unit = parseDirectives(start); |
for (var directive in unit.directives) { |
- if (directive is! UriBasedDirective) continue; |
- var next = sources.resolveUri(start, directive.uri.stringValue); |
- collectSources(next, files); |
+ if (directive is UriBasedDirective) { |
+ var next = sources.resolveUri(start, directive.uri.stringValue); |
+ collectSources(next, files); |
+ } |
} |
} |
@@ -163,7 +166,7 @@ Token tokenize(Source source) { |
/// [scanTotalChars] characters. |
void report(String name, int time) { |
var sb = new StringBuffer(); |
- sb.write('$name: ${time ~/ 1000} ms'); |
+ sb.write('$name: $time us, ${time ~/ 1000} ms'); |
sb.write(', ${scanTotalChars * 1000 ~/ time} chars/ms'); |
print('$sb'); |
} |