166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.analysis.util'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('ui'); 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('tracing.analysis', function() { 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function analyzeSingleCounterSampleHit(results, counterSampleHit) { 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ctr = counterSampleHit.counter; 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var sampleIndex = counterSampleHit.sampleIndex; 146833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var values = []; 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < ctr.numSeries; ++i) 176833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis values.push(ctr.getSeries(i).getSample(sampleIndex).value); 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var table = results.appendTable('analysis-counter-table', 2); 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.appendTableHeader(table, 'Selected counter:'); 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.appendSummaryRow(table, 'Title', ctr.name); 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.appendSummaryRowTime( 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis table, 'Timestamp', ctr.timestamps[sampleIndex]); 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < ctr.numSeries; i++) 266833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis results.appendSummaryRow(table, ctr.getSeries(i).name, values[i]); 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis function analyzeMultipleCounterSampleHits(results, counterSampleHits) { 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var hitsByCounter = {}; 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < counterSampleHits.length; i++) { 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ctr = counterSampleHits[i].counter; 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (!hitsByCounter[ctr.guid]) 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis hitsByCounter[ctr.guid] = []; 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis hitsByCounter[ctr.guid].push(counterSampleHits[i]); 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 386833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis var table = results.appendTable('analysis-counter-table', 2); 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.appendTableHeader(table, 'Counters:'); 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var id in hitsByCounter) { 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var hits = hitsByCounter[id]; 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ctr = hits[0].counter; 436833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var sampleIndices = []; 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < hits.length; i++) 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis sampleIndices.push(hits[i].sampleIndex); 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var stats = ctr.getSampleStatistics(sampleIndices); 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis for (var i = 0; i < stats.length; i++) { 506833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis var samples = []; 516833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis for (var k = 0; k < sampleIndices.length; ++k) 526833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis samples.push(ctr.getSeries(i).getSample(sampleIndices[k]).value); 536833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis results.appendDataRow( 556833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis table, 566833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis ctr.name + ': series(' + ctr.getSeries(i).name + ')', 576833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis samples, 586833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis samples.length, 596833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis stats[i]); 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return { 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis analyzeSingleCounterSampleHit: analyzeSingleCounterSampleHit, 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis analyzeMultipleCounterSampleHits: analyzeMultipleCounterSampleHits 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 69