Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1092)

Side by Side Diff: dart/site/try/poi/poi.dart

Issue 626853002: Add PoiTask to better measure timing. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library trydart.poi; 5 library trydart.poi;
6 6
7 import 'dart:async' show 7 import 'dart:async' show
8 Completer, 8 Completer,
9 Future; 9 Future;
10 10
11 import 'dart:io' as io; 11 import 'dart:io' as io;
12 12
13 import 'dart:convert' show 13 import 'dart:convert' show
14 UTF8; 14 UTF8;
15 15
16 import 'package:dart2js_incremental/dart2js_incremental.dart' show 16 import 'package:dart2js_incremental/dart2js_incremental.dart' show
17 reuseCompiler; 17 reuseCompiler;
18 18
19 import 'package:dart2js_incremental/library_updater.dart' show 19 import 'package:dart2js_incremental/library_updater.dart' show
20 LibraryUpdater; 20 LibraryUpdater;
21 21
22 import 'package:compiler/implementation/source_file_provider.dart' show 22 import 'package:compiler/implementation/source_file_provider.dart' show
23 FormattingDiagnosticHandler; 23 FormattingDiagnosticHandler;
24 24
25 import 'package:compiler/compiler.dart' as api; 25 import 'package:compiler/compiler.dart' as api;
26 26
27 import 'package:compiler/implementation/dart2jslib.dart' show 27 import 'package:compiler/implementation/dart2jslib.dart' show
28 Compiler, 28 Compiler,
29 CompilerTask,
29 Enqueuer, 30 Enqueuer,
30 QueueFilter, 31 QueueFilter,
31 WorkItem; 32 WorkItem;
32 33
33 import 'package:compiler/implementation/elements/visitor.dart' show 34 import 'package:compiler/implementation/elements/visitor.dart' show
34 ElementVisitor; 35 ElementVisitor;
35 36
36 import 'package:compiler/implementation/elements/elements.dart' show 37 import 'package:compiler/implementation/elements/elements.dart' show
37 AbstractFieldElement, 38 AbstractFieldElement,
38 ClassElement, 39 ClassElement,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 /// really need. 89 /// really need.
89 bool isVerbose = false; 90 bool isVerbose = false;
90 91
91 /// When true (the default value) print serialized scope information at the 92 /// When true (the default value) print serialized scope information at the
92 /// provided position. 93 /// provided position.
93 const bool PRINT_SCOPE_INFO = 94 const bool PRINT_SCOPE_INFO =
94 const bool.fromEnvironment('PRINT_SCOPE_INFO', defaultValue: true); 95 const bool.fromEnvironment('PRINT_SCOPE_INFO', defaultValue: true);
95 96
96 Stopwatch wallClock = new Stopwatch(); 97 Stopwatch wallClock = new Stopwatch();
97 98
99 PoiTask poiTask;
100
98 Compiler cachedCompiler; 101 Compiler cachedCompiler;
99 102
100 /// Iterator for reading lines from [io.stdin]. 103 /// Iterator for reading lines from [io.stdin].
101 class StdinIterator implements Iterator<String> { 104 class StdinIterator implements Iterator<String> {
102 String current; 105 String current;
103 106
104 bool moveNext() { 107 bool moveNext() {
105 current = io.stdin.readLineSync(); 108 current = io.stdin.readLineSync();
106 return true; 109 return true;
107 } 110 }
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 '--no-source-maps', 366 '--no-source-maps',
364 '--verbose', 367 '--verbose',
365 '--categories=Client,Server', 368 '--categories=Client,Server',
366 '--incremental-support', 369 '--incremental-support',
367 '--disable-type-inference', 370 '--disable-type-inference',
368 ]; 371 ];
369 372
370 LibraryUpdater updater = 373 LibraryUpdater updater =
371 new LibraryUpdater( 374 new LibraryUpdater(
372 cachedCompiler, inputProvider, script, printWallClock, printVerbose); 375 cachedCompiler, inputProvider, script, printWallClock, printVerbose);
376 Future<bool> reuseLibrary(LibraryElement library) {
377 return poiTask.measure(() => updater.reuseLibrary(library));
378 }
373 379
374 return reuseCompiler( 380 return reuseCompiler(
375 diagnosticHandler: handler, 381 diagnosticHandler: handler,
376 inputProvider: inputProvider, 382 inputProvider: inputProvider,
377 options: options, 383 options: options,
378 cachedCompiler: cachedCompiler, 384 cachedCompiler: cachedCompiler,
379 libraryRoot: libraryRoot, 385 libraryRoot: libraryRoot,
380 packageRoot: packageRoot, 386 packageRoot: packageRoot,
381 packagesAreImmutable: true, 387 packagesAreImmutable: true,
382 reuseLibrary: updater.reuseLibrary).then((Compiler newCompiler) { 388 reuseLibrary: reuseLibrary).then((Compiler newCompiler) {
383 var filter = new ScriptOnlyFilter(script); 389 var filter = new ScriptOnlyFilter(script);
384 newCompiler.enqueuerFilter = filter; 390 newCompiler.enqueuerFilter = filter;
385 return runPoiInternal(newCompiler, updater, position); 391 return runPoiInternal(newCompiler, updater, position);
386 }); 392 });
387 } 393 }
388 394
389 Future<Element> runPoiInternal( 395 Future<Element> runPoiInternal(
390 Compiler newCompiler, 396 Compiler newCompiler,
391 LibraryUpdater updater, 397 LibraryUpdater updater,
392 int position) { 398 int position) {
399
393 cachedCompiler = newCompiler; 400 cachedCompiler = newCompiler;
401 if (poiTask == null || poiTask.compiler != cachedCompiler) {
402 poiTask = new PoiTask(cachedCompiler);
403 cachedCompiler.tasks.add(poiTask);
404 }
394 405
395 Future<bool> compilation = cachedCompiler.run(updater.uri); 406 Future<bool> compilation = cachedCompiler.run(updater.uri);
396 407
397 return compilation.then((success) { 408 return compilation.then((success) {
398 if (isVerbose) { 409 if (isVerbose) {
399 for (final task in cachedCompiler.tasks) { 410 for (final task in cachedCompiler.tasks) {
400 int time = task.timingMicroseconds; 411 int time = task.timingMicroseconds;
401 if (time != 0) { 412 if (time != 0) {
402 printFormattedTime('${task.name} took', time); 413 printFormattedTime('${task.name} took', time);
403 } 414 }
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 buffer.write('\n'); 729 buffer.write('\n');
719 indented.write('}'); 730 indented.write('}');
720 } 731 }
721 } 732 }
722 733
723 modelx.ScopeX localScope(modelx.LibraryElementX element) => element.localScope; 734 modelx.ScopeX localScope(modelx.LibraryElementX element) => element.localScope;
724 735
725 modelx.ImportScope importScope(modelx.LibraryElementX element) { 736 modelx.ImportScope importScope(modelx.LibraryElementX element) {
726 return element.importScope; 737 return element.importScope;
727 } 738 }
739
740 class PoiTask extends CompilerTask {
741 PoiTask(Compiler compiler) : super(compiler);
742
743 String get name => 'POI';
744 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698