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

Unified Diff: tracing/tracing/value/chart_json_converter.html

Issue 2474573002: Convert chart-json to Histograms. (Closed)
Patch Set: test with tir label Created 4 years, 1 month 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
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>

Powered by Google App Engine
This is Rietveld 408576698