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

Side by Side Diff: runtime/observatory/lib/src/elements/heap_snapshot.dart

Issue 1272823006: Add timing prints to object group to get a baseline. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « runtime/observatory/lib/object_graph.dart ('k') | 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 heap_snapshot_element; 5 library heap_snapshot_element;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:html'; 8 import 'dart:html';
9 import 'observatory_element.dart'; 9 import 'observatory_element.dart';
10 import 'package:observatory/app.dart'; 10 import 'package:observatory/app.dart';
11 import 'package:observatory/service.dart'; 11 import 'package:observatory/service.dart';
12 import 'package:observatory/elements.dart'; 12 import 'package:observatory/elements.dart';
13 import 'package:observatory/object_graph.dart'; 13 import 'package:observatory/object_graph.dart';
14 import 'package:polymer/polymer.dart'; 14 import 'package:polymer/polymer.dart';
15 import 'package:logging/logging.dart';
15 16
16 class DominatorTreeRow extends TableTreeRow { 17 class DominatorTreeRow extends TableTreeRow {
17 final ObjectVertex vertex; 18 final ObjectVertex vertex;
18 final HeapSnapshot snapshot; 19 final HeapSnapshot snapshot;
19 20
20 var _domTreeChildren; 21 var _domTreeChildren;
21 get domTreeChildren { 22 get domTreeChildren {
22 if (_domTreeChildren == null) { 23 if (_domTreeChildren == null) {
23 _domTreeChildren = vertex.dominatorTreeChildren(); 24 _domTreeChildren = vertex.dominatorTreeChildren();
24 } 25 }
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 int retainedSize = 0; 329 int retainedSize = 0;
329 330
330 List<MergedEdge> incomingEdges = new List<MergedEdge>(); 331 List<MergedEdge> incomingEdges = new List<MergedEdge>();
331 Map<int, MergedEdge> outgoingEdges = new Map<int, MergedEdge>(); 332 Map<int, MergedEdge> outgoingEdges = new Map<int, MergedEdge>();
332 333
333 MergedVertex(this.cid); 334 MergedVertex(this.cid);
334 } 335 }
335 336
336 337
337 Future<List<MergedVertex>> buildMergedVertices(ObjectGraph graph) async { 338 Future<List<MergedVertex>> buildMergedVertices(ObjectGraph graph) async {
339 Logger.root.info("Start merge vertices");
340
338 var cidToMergedVertex = {}; 341 var cidToMergedVertex = {};
339 342
340 for (var vertex in graph.vertices) { 343 for (var vertex in graph.vertices) {
341 var cid = vertex.vmCid; 344 var cid = vertex.vmCid;
342 MergedVertex source = cidToMergedVertex[cid]; 345 MergedVertex source = cidToMergedVertex[cid];
343 if (source == null) { 346 if (source == null) {
344 cidToMergedVertex[cid] = source = new MergedVertex(cid); 347 cidToMergedVertex[cid] = source = new MergedVertex(cid);
345 } 348 }
346 349
347 source.instances++; 350 source.instances++;
(...skipping 10 matching lines...) Expand all
358 edge = new MergedEdge(source, target); 361 edge = new MergedEdge(source, target);
359 source.outgoingEdges[cid2] = edge; 362 source.outgoingEdges[cid2] = edge;
360 target.incomingEdges.add(edge); 363 target.incomingEdges.add(edge);
361 } 364 }
362 edge.count++; 365 edge.count++;
363 // An over-estimate if there are multiple references to the same object. 366 // An over-estimate if there are multiple references to the same object.
364 edge.shallowSize += vertex2.shallowSize == null ? 0 : vertex2.shallowSize; 367 edge.shallowSize += vertex2.shallowSize == null ? 0 : vertex2.shallowSize;
365 } 368 }
366 } 369 }
367 370
371 Logger.root.info("End merge vertices");
372
368 return cidToMergedVertex.values.toList(); 373 return cidToMergedVertex.values.toList();
369 } 374 }
370 375
371 @CustomTag('heap-snapshot') 376 @CustomTag('heap-snapshot')
372 class HeapSnapshotElement extends ObservatoryElement { 377 class HeapSnapshotElement extends ObservatoryElement {
373 @published Isolate isolate; 378 @published Isolate isolate;
374 @observable HeapSnapshot snapshot; 379 @observable HeapSnapshot snapshot;
375 380
376 @published String state = 'Requested'; 381 @published String state = 'Requested';
377 @published String analysisSelector = 'DominatorTree'; 382 @published String analysisSelector = 'DominatorTree';
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 456
452 new Future.delayed(const Duration(milliseconds: 500), () { 457 new Future.delayed(const Duration(milliseconds: 500), () {
453 buildMergedVertices(snapshot.graph).then((vertices) { 458 buildMergedVertices(snapshot.graph).then((vertices) {
454 state = 'Loaded'; 459 state = 'Loaded';
455 var rootRow = new MergedVerticesRow(tree, null, isolate, vertices); 460 var rootRow = new MergedVerticesRow(tree, null, isolate, vertices);
456 tree.initialize(rootRow); 461 tree.initialize(rootRow);
457 }); 462 });
458 }); 463 });
459 } 464 }
460 } 465 }
OLDNEW
« no previous file with comments | « runtime/observatory/lib/object_graph.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698