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

Side by Side Diff: tracing/tracing/model/cpu.html

Issue 2771723003: [tracing] Move math utilities from base into their own subdirectory (attempt 2) (Closed)
Patch Set: rebase Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « tracing/tracing/model/counter_sample.html ('k') | tracing/tracing/model/cpu_slice.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 Copyright (c) 2013 The Chromium Authors. All rights reserved. 3 Copyright (c) 2013 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 7
8 <link rel="import" href="/tracing/base/range.html"> 8 <link rel="import" href="/tracing/base/math/range.html">
9 <link rel="import" href="/tracing/model/counter.html"> 9 <link rel="import" href="/tracing/model/counter.html">
10 <link rel="import" href="/tracing/model/cpu_slice.html"> 10 <link rel="import" href="/tracing/model/cpu_slice.html">
11 <link rel="import" href="/tracing/model/process_base.html"> 11 <link rel="import" href="/tracing/model/process_base.html">
12 <link rel="import" href="/tracing/model/thread_time_slice.html"> 12 <link rel="import" href="/tracing/model/thread_time_slice.html">
13 13
14 <script> 14 <script>
15 'use strict'; 15 'use strict';
16 16
17 /** 17 /**
18 * @fileoverview Provides the Cpu class. 18 * @fileoverview Provides the Cpu class.
19 */ 19 */
20 tr.exportTo('tr.model', function() { 20 tr.exportTo('tr.model', function() {
21 var ColorScheme = tr.b.ColorScheme; 21 var ColorScheme = tr.b.ColorScheme;
22 var Counter = tr.model.Counter; 22 var Counter = tr.model.Counter;
23 var CpuSlice = tr.model.CpuSlice; 23 var CpuSlice = tr.model.CpuSlice;
24 24
25 /** 25 /**
26 * The Cpu represents a Cpu from the kernel's point of view. 26 * The Cpu represents a Cpu from the kernel's point of view.
27 * @constructor 27 * @constructor
28 */ 28 */
29 function Cpu(kernel, number) { 29 function Cpu(kernel, number) {
30 if (kernel === undefined || number === undefined) 30 if (kernel === undefined || number === undefined)
31 throw new Error('Missing arguments'); 31 throw new Error('Missing arguments');
32 this.kernel = kernel; 32 this.kernel = kernel;
33 this.cpuNumber = number; 33 this.cpuNumber = number;
34 this.slices = []; 34 this.slices = [];
35 this.counters = {}; 35 this.counters = {};
36 this.bounds_ = new tr.b.Range(); 36 this.bounds_ = new tr.b.math.Range();
37 this.samples_ = undefined; // Set during createSubSlices 37 this.samples_ = undefined; // Set during createSubSlices
38 38
39 // Start timestamp of the last active thread. 39 // Start timestamp of the last active thread.
40 this.lastActiveTimestamp_ = undefined; 40 this.lastActiveTimestamp_ = undefined;
41 41
42 // Identifier of the last active thread. On Linux, it's a pid while on 42 // Identifier of the last active thread. On Linux, it's a pid while on
43 // Windows it's a thread id. 43 // Windows it's a thread id.
44 this.lastActiveThread_ = undefined; 44 this.lastActiveThread_ = undefined;
45 45
46 // Name and arguments of the last active thread. 46 // Name and arguments of the last active thread.
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 for (var id in this.counters) 143 for (var id in this.counters)
144 categoriesDict[this.counters[id].category] = true; 144 categoriesDict[this.counters[id].category] = true;
145 for (var i = 0; i < this.samples_.length; i++) 145 for (var i = 0; i < this.samples_.length; i++)
146 categoriesDict[this.samples_[i].category] = true; 146 categoriesDict[this.samples_[i].category] = true;
147 }, 147 },
148 148
149 /* 149 /*
150 * Returns the index of the slice in the CPU's slices, or undefined. 150 * Returns the index of the slice in the CPU's slices, or undefined.
151 */ 151 */
152 indexOf: function(cpuSlice) { 152 indexOf: function(cpuSlice) {
153 var i = tr.b.findLowIndexInSortedArray( 153 var i = tr.b.math.findLowIndexInSortedArray(
154 this.slices, 154 this.slices,
155 function(slice) { return slice.start; }, 155 function(slice) { return slice.start; },
156 cpuSlice.start); 156 cpuSlice.start);
157 if (this.slices[i] !== cpuSlice) 157 if (this.slices[i] !== cpuSlice)
158 return undefined; 158 return undefined;
159 return i; 159 return i;
160 }, 160 },
161 161
162 /** 162 /**
163 * Closes the thread running on the CPU. |endTimestamp| is the timestamp 163 * Closes the thread running on the CPU. |endTimestamp| is the timestamp
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 var stats = {}; 219 var stats = {};
220 220
221 function addStatsForFreq(freqSample, index) { 221 function addStatsForFreq(freqSample, index) {
222 // Counters don't have an explicit end or duration; 222 // Counters don't have an explicit end or duration;
223 // calculate the end by looking at the starting point 223 // calculate the end by looking at the starting point
224 // of the next value in the series, or if that doesn't 224 // of the next value in the series, or if that doesn't
225 // exist, assume this frequency is held until the end. 225 // exist, assume this frequency is held until the end.
226 var freqEnd = (index < freqSample.series_.length - 1) ? 226 var freqEnd = (index < freqSample.series_.length - 1) ?
227 freqSample.series_.samples_[index + 1].timestamp : range.max; 227 freqSample.series_.samples_[index + 1].timestamp : range.max;
228 228
229 var freqRange = tr.b.Range.fromExplicitRange(freqSample.timestamp, 229 var freqRange = tr.b.math.Range.fromExplicitRange(freqSample.timestamp,
230 freqEnd); 230 freqEnd);
231 var intersection = freqRange.findIntersection(range); 231 var intersection = freqRange.findIntersection(range);
232 if (!(freqSample.value in stats)) 232 if (!(freqSample.value in stats))
233 stats[freqSample.value] = 0; 233 stats[freqSample.value] = 0;
234 stats[freqSample.value] += intersection.duration; 234 stats[freqSample.value] += intersection.duration;
235 } 235 }
236 236
237 var freqCounter = this.getCounter('', 'Clock Frequency'); 237 var freqCounter = this.getCounter('', 'Clock Frequency');
238 if (freqCounter !== undefined) { 238 if (freqCounter !== undefined) {
239 var freqSeries = freqCounter.getSeries(0); 239 var freqSeries = freqCounter.getSeries(0);
240 if (!freqSeries) 240 if (!freqSeries)
241 return; 241 return;
242 242
243 tr.b.iterateOverIntersectingIntervals(freqSeries.samples_, 243 tr.b.math.iterateOverIntersectingIntervals(freqSeries.samples_,
244 function(x) { return x.timestamp; }, 244 function(x) { return x.timestamp; },
245 function(x, index) { 245 function(x, index) {
246 if (index < freqSeries.length - 1) { 246 if (index < freqSeries.length - 1) {
247 return freqSeries.samples_[index + 1].timestamp; 247 return freqSeries.samples_[index + 1].timestamp;
248 } 248 }
249 return range.max; 249 return range.max;
250 }, 250 },
251 range.min, 251 range.min,
252 range.max, 252 range.max,
253 addStatsForFreq); 253 addStatsForFreq);
254 } 254 }
255 255
256 return stats; 256 return stats;
257 } 257 }
258 }; 258 };
259 259
260 /** 260 /**
261 * Comparison between processes that orders by cpuNumber. 261 * Comparison between processes that orders by cpuNumber.
262 */ 262 */
263 Cpu.compare = function(x, y) { 263 Cpu.compare = function(x, y) {
264 return x.cpuNumber - y.cpuNumber; 264 return x.cpuNumber - y.cpuNumber;
265 }; 265 };
266 266
267 267
268 return { 268 return {
269 Cpu, 269 Cpu,
270 }; 270 };
271 }); 271 });
272 </script> 272 </script>
OLDNEW
« no previous file with comments | « tracing/tracing/model/counter_sample.html ('k') | tracing/tracing/model/cpu_slice.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698