Index: tracing/tracing/value/chart_json_converter.html |
diff --git a/tracing/tracing/value/chart_json_converter.html b/tracing/tracing/value/chart_json_converter.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ce83d27e78e56f9a655057a6eb2c706903f46e6c |
--- /dev/null |
+++ b/tracing/tracing/value/chart_json_converter.html |
@@ -0,0 +1,142 @@ |
+<!DOCTYPE html> |
+<!-- |
+Copyright 2016 The Chromium Authors. All rights reserved. |
+Use of this source code is governed by a BSD-style license that can be |
+found in the LICENSE file. |
+--> |
+ |
+<link rel="import" href="/tracing/value/histogram.html"> |
+ |
+<script> |
+'use strict'; |
+tr.exportTo('tr.v', function() { |
+ var LEGACY_UNIT_INFO = new Map(); |
+ LEGACY_UNIT_INFO.set('%', {name: 'normalizedPercentage'}); |
eakuefner
2016/11/18 21:37:11
can you move this out into its own module?
the ut
|
+ LEGACY_UNIT_INFO.set('', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('Celsius', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('Hz', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('KB', {name: 'sizeInBytes', conversionFactor: 1024}); |
+ LEGACY_UNIT_INFO.set('MB', { |
+ name: 'sizeInBytes', |
+ conversionFactor: 1024 * 1024, |
+ }); |
+ LEGACY_UNIT_INFO.set('ObjectsAt30FPS', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('available_kB', { |
+ name: 'sizeInBytes', |
+ conversionFactor: 1024, |
+ }); |
+ LEGACY_UNIT_INFO.set('bit/s', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('bytes', {name: 'sizeInBytes'}); |
+ LEGACY_UNIT_INFO.set('chars/s', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('commit_count', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('count', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('coverage%', {name: 'normalizedPercentage'}); |
+ LEGACY_UNIT_INFO.set('dB', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('files', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('fps', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('frame_count', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('frame_time', {name: 'timeDurationInMs'}); |
+ LEGACY_UNIT_INFO.set('frames', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('frames-per-second', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('garbage_collections', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('idle%', {name: 'normalizedPercentage'}); |
+ LEGACY_UNIT_INFO.set('janks', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('kb', {name: 'sizeInBytes', conversionFactor: 1024}); |
+ LEGACY_UNIT_INFO.set('lines', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('mWh', {name: 'energyInJoules', conversionFactor: 3.6}); |
+ LEGACY_UNIT_INFO.set('milliseconds', {name: 'timeDurationInMs'}); |
+ LEGACY_UNIT_INFO.set('milliseconds-per-frame', {name: 'timeDurationInMs'}); |
+ LEGACY_UNIT_INFO.set('minutes', { |
+ name: 'timeDurationInMs', |
+ conversionFactor: 60e3, |
+ }); |
+ LEGACY_UNIT_INFO.set('mips', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('mpixels_sec', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('ms', {name: 'timeDurationInMs'}); |
+ LEGACY_UNIT_INFO.set('mtri_sec', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('mvtx_sec', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('objects (bigger is better)', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('packets', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('percent', {name: 'normalizedPercentage'}); |
+ LEGACY_UNIT_INFO.set('points', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('ports', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('reduction%', {name: 'normalizedPercentage'}); |
+ LEGACY_UNIT_INFO.set('relocs', {name: 'count'}); |
+ LEGACY_UNIT_INFO.set('runs/s', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('runs_per_s', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('runs_per_second', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('score (bigger is better)', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('score', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('score_(bigger_is_better)', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('seconds', { |
+ name: 'timeDurationInMs', |
+ conversionFactor: 1e3, |
+ }); |
+ LEGACY_UNIT_INFO.set('tokens/s', {name: 'unitlessNumber'}); |
+ LEGACY_UNIT_INFO.set('us', { |
+ name: 'timeDurationInMs', |
+ conversionFactor: 1e-3, |
+ }); |
+ |
+ class ChartJsonConverter { |
+ /** |
+ * Parses Values from |charts|, converts them to Histograms, and adds those |
+ * to |histograms|. |
+ * |
+ * @param {!Array.<!Object>} charts |
+ * @param {!tr.v.HistogramSet} histograms |
+ */ |
+ static convertChartJson(charts, histograms) { |
+ tr.b.iterItems(charts.charts, (name, pageValues) => { |
+ if (name === 'trace') return; |
+ |
+ tr.b.iterItems(pageValues, (storyName, value) => { |
+ if (storyName === 'summary') return; |
+ |
+ var unitInfo = LEGACY_UNIT_INFO.get(value.units) || {}; |
+ var unitName = unitInfo.name || 'unitlessNumber'; |
+ var unitNameSuffix = tr.b.Unit.nameSuffixForImprovementDirection( |
+ ChartJsonConverter.convertImprovementDirection( |
+ value.improvement_direction)); |
+ var conversionFactor = unitInfo.conversionFactor || 1; |
+ |
+ var hist = new tr.v.Histogram( |
+ value.name, |
+ tr.b.Unit.byName[unitName + unitNameSuffix], |
+ tr.v.HistogramBinBoundaries.SINGULAR); |
+ hist.description = value.description || ''; |
+ histograms.addHistogram(hist); |
+ |
+ var iterationInfo = new tr.v.d.IterationInfo(); |
+ iterationInfo.addInfo({ |
+ storyDisplayName: storyName, |
+ legacyTIRLabel: value.tir_label, |
+ benchmarkName: charts.benchmark_name, |
+ }); |
+ iterationInfo.addToValue(hist); |
+ |
+ if (value.type === 'list_of_scalar_values') { |
+ for (var sample of value.values) { |
+ hist.addSample(sample * conversionFactor); |
+ } |
+ } else if (value.type === 'scalar') { |
+ hist.addSample(value.value * conversionFactor); |
+ } |
+ }); |
+ }); |
+ } |
+ |
+ static convertImprovementDirection(improvementDirection) { |
+ switch (improvementDirection) { |
+ case 'down': return tr.b.ImprovementDirection.SMALLER_IS_BETTER; |
+ case 'up': return tr.b.ImprovementDirection.BIGGER_IS_BETTER; |
+ default: return tr.b.ImprovementDirection.DONT_CARE; |
+ } |
+ } |
+ } |
+ |
+ return { |
+ ChartJsonConverter, |
+ }; |
+}); |
+</script> |