// Copyright (c) 2013 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. 'use strict'; base.require('tracing.analysis.util'); base.require('ui'); base.exportTo('tracing.analysis', function() { function analyzeSingleCounterSampleHit(results, counterSampleHit) { var ctr = counterSampleHit.counter; var sampleIndex = counterSampleHit.sampleIndex; var values = []; for (var i = 0; i < ctr.numSeries; ++i) values.push(ctr.getSeries(i).getSample(sampleIndex).value); var table = results.appendTable('analysis-counter-table', 2); results.appendTableHeader(table, 'Selected counter:'); results.appendSummaryRow(table, 'Title', ctr.name); results.appendSummaryRowTime( table, 'Timestamp', ctr.timestamps[sampleIndex]); for (var i = 0; i < ctr.numSeries; i++) results.appendSummaryRow(table, ctr.getSeries(i).name, values[i]); } function analyzeMultipleCounterSampleHits(results, counterSampleHits) { var hitsByCounter = {}; for (var i = 0; i < counterSampleHits.length; i++) { var ctr = counterSampleHits[i].counter; if (!hitsByCounter[ctr.guid]) hitsByCounter[ctr.guid] = []; hitsByCounter[ctr.guid].push(counterSampleHits[i]); } var table = results.appendTable('analysis-counter-table', 2); results.appendTableHeader(table, 'Counters:'); for (var id in hitsByCounter) { var hits = hitsByCounter[id]; var ctr = hits[0].counter; var sampleIndices = []; for (var i = 0; i < hits.length; i++) sampleIndices.push(hits[i].sampleIndex); var stats = ctr.getSampleStatistics(sampleIndices); for (var i = 0; i < stats.length; i++) { var samples = []; for (var k = 0; k < sampleIndices.length; ++k) samples.push(ctr.getSeries(i).getSample(sampleIndices[k]).value); results.appendDataRow( table, ctr.name + ': series(' + ctr.getSeries(i).name + ')', samples, samples.length, stats[i]); } } } return { analyzeSingleCounterSampleHit: analyzeSingleCounterSampleHit, analyzeMultipleCounterSampleHits: analyzeMultipleCounterSampleHits }; });