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

Unified Diff: pkg/analysis_server/lib/src/get_handler.dart

Issue 1169573003: Expose timing data for the new task model (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/src/get_handler.dart
diff --git a/pkg/analysis_server/lib/src/get_handler.dart b/pkg/analysis_server/lib/src/get_handler.dart
index 776f38a5d124fd44d58042da5f4ae16c2e2081b7..8aeafe67d5082f917cda2f31148d8ba164a688a1 100644
--- a/pkg/analysis_server/lib/src/get_handler.dart
+++ b/pkg/analysis_server/lib/src/get_handler.dart
@@ -30,6 +30,7 @@ import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/java_engine.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
+import 'package:analyzer/task/model.dart' as newTask;
import 'package:plugin/plugin.dart';
/**
@@ -261,58 +262,95 @@ class GetHandler {
_writePage(buffer, 'Analysis Server - Analysis Performance', [],
(StringBuffer buffer) {
buffer.write('<h3>Analysis Performance</h3>');
-
- {
- buffer.write('<p><b>Time spent in each phase of analysis</b></p>');
+ if (AnalysisEngine.instance.useTaskModel) {
+ //
+ // Write new task model timing information.
+ //
+ buffer.write('<p><b>Task performace data</b></p>');
buffer.write(
'<table style="border-collapse: separate; border-spacing: 10px 5px;">');
- _writeRow(buffer, ['Time (in ms)', 'Percent', 'Analysis Phase'],
- header: true);
- // prepare sorted tags
- List<PerformanceTag> tags = PerformanceTag.all.toList();
- tags.remove(ServerPerformanceStatistics.idle);
- tags.sort((a, b) => b.elapsedMs - a.elapsedMs);
- // prepare total time
- int totalTime = 0;
- tags.forEach((PerformanceTag tag) {
- totalTime += tag.elapsedMs;
+ _writeRow(buffer, [
+ 'Task Name',
+ 'Count',
+ 'Total Time (in ms)',
+ 'Average Time (in ms)'
+ ], header: true);
+
+ Map<Type, int> countMap = newTask.AnalysisTask.countMap;
+ Map<Type, Stopwatch> stopwatchMap = newTask.AnalysisTask.stopwatchMap;
+ List<Type> taskClasses = stopwatchMap.keys.toList();
+ taskClasses.sort((Type first, Type second) =>
+ first.toString().compareTo(second.toString()));
+ taskClasses.forEach((Type taskClass) {
+ int count = countMap[taskClass];
+ if (count == null) {
+ count = 0;
+ }
+ int totalTime = stopwatchMap[taskClass].elapsedMilliseconds;
+ _writeRow(buffer, [
+ taskClass.toString(),
+ count,
+ totalTime,
+ count <= 0 ? '-' : totalTime / count
+ ], classes: [null, "right", "right", "right"]);
});
- // write rows
- void writeRow(PerformanceTag tag) {
- double percent = (tag.elapsedMs * 100) / totalTime;
- String percentStr = '${percent.toStringAsFixed(2)}%';
- _writeRow(buffer, [tag.elapsedMs, percentStr, tag.label],
- classes: ["right", "right", null]);
- }
- tags.forEach(writeRow);
buffer.write('</table>');
- }
-
- Map<DataDescriptor, Map<CacheState, int>> transitionMap =
- SourceEntry.transitionMap;
- buffer.write(
- '<p><b>Number of times a state transitioned to VALID (grouped by descriptor)</b></p>');
- if (transitionMap.isEmpty) {
- buffer.write('<p>none</p>');
} else {
- List<DataDescriptor> descriptors = transitionMap.keys.toList();
- descriptors.sort((DataDescriptor first, DataDescriptor second) =>
- first.toString().compareTo(second.toString()));
- for (DataDescriptor key in descriptors) {
- Map<CacheState, int> countMap = transitionMap[key];
- List<CacheState> oldStates = countMap.keys.toList();
- oldStates.sort((CacheState first, CacheState second) =>
- first.toString().compareTo(second.toString()));
- buffer.write('<p>${key.toString()}</p>');
+ //
+ // Write old task model timing information.
+ //
+ {
+ buffer.write('<p><b>Time spent in each phase of analysis</b></p>');
buffer.write(
'<table style="border-collapse: separate; border-spacing: 10px 5px;">');
- _writeRow(buffer, ['Count', 'Previous State'], header: true);
- for (CacheState state in oldStates) {
- _writeRow(buffer, [countMap[state], state.toString()],
- classes: ["right", null]);
+ _writeRow(buffer, ['Time (in ms)', 'Percent', 'Analysis Phase'],
+ header: true);
+ // prepare sorted tags
+ List<PerformanceTag> tags = PerformanceTag.all.toList();
+ tags.remove(ServerPerformanceStatistics.idle);
+ tags.sort((a, b) => b.elapsedMs - a.elapsedMs);
+ // prepare total time
+ int totalTime = 0;
+ tags.forEach((PerformanceTag tag) {
+ totalTime += tag.elapsedMs;
+ });
+ // write rows
+ void writeRow(PerformanceTag tag) {
+ double percent = (tag.elapsedMs * 100) / totalTime;
+ String percentStr = '${percent.toStringAsFixed(2)}%';
+ _writeRow(buffer, [tag.elapsedMs, percentStr, tag.label],
+ classes: ["right", "right", null]);
}
+ tags.forEach(writeRow);
buffer.write('</table>');
}
+
+ Map<DataDescriptor, Map<CacheState, int>> transitionMap =
+ SourceEntry.transitionMap;
+ buffer.write(
+ '<p><b>Number of times a state transitioned to VALID (grouped by descriptor)</b></p>');
+ if (transitionMap.isEmpty) {
+ buffer.write('<p>none</p>');
+ } else {
+ List<DataDescriptor> descriptors = transitionMap.keys.toList();
+ descriptors.sort((DataDescriptor first, DataDescriptor second) =>
+ first.toString().compareTo(second.toString()));
+ for (DataDescriptor key in descriptors) {
+ Map<CacheState, int> countMap = transitionMap[key];
+ List<CacheState> oldStates = countMap.keys.toList();
+ oldStates.sort((CacheState first, CacheState second) =>
+ first.toString().compareTo(second.toString()));
+ buffer.write('<p>${key.toString()}</p>');
+ buffer.write(
+ '<table style="border-collapse: separate; border-spacing: 10px 5px;">');
+ _writeRow(buffer, ['Count', 'Previous State'], header: true);
+ for (CacheState state in oldStates) {
+ _writeRow(buffer, [countMap[state], state.toString()],
+ classes: ["right", null]);
+ }
+ buffer.write('</table>');
+ }
+ }
}
});
});
« 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