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

Side by Side Diff: tracing/tracing/model/thread.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/slice_group.html ('k') | tracing/tracing/model/thread_test.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/guid.html"> 8 <link rel="import" href="/tracing/base/guid.html">
9 <link rel="import" href="/tracing/base/range.html"> 9 <link rel="import" href="/tracing/base/math/range.html">
10 <link rel="import" href="/tracing/model/async_slice_group.html"> 10 <link rel="import" href="/tracing/model/async_slice_group.html">
11 <link rel="import" href="/tracing/model/event_container.html"> 11 <link rel="import" href="/tracing/model/event_container.html">
12 <link rel="import" href="/tracing/model/slice_group.html"> 12 <link rel="import" href="/tracing/model/slice_group.html">
13 <link rel="import" href="/tracing/model/thread_slice.html"> 13 <link rel="import" href="/tracing/model/thread_slice.html">
14 14
15 <script> 15 <script>
16 'use strict'; 16 'use strict';
17 17
18 /** 18 /**
19 * @fileoverview Provides the Thread class. 19 * @fileoverview Provides the Thread class.
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 }, 218 },
219 219
220 getProcess: function() { 220 getProcess: function() {
221 return this.parent; 221 return this.parent;
222 }, 222 },
223 223
224 /* 224 /*
225 * Returns the index of the slice in the timeSlices array, or undefined. 225 * Returns the index of the slice in the timeSlices array, or undefined.
226 */ 226 */
227 indexOfTimeSlice: function(timeSlice) { 227 indexOfTimeSlice: function(timeSlice) {
228 var i = tr.b.findLowIndexInSortedArray( 228 var i = tr.b.math.findLowIndexInSortedArray(
229 this.timeSlices, 229 this.timeSlices,
230 function(slice) { return slice.start; }, 230 function(slice) { return slice.start; },
231 timeSlice.start); 231 timeSlice.start);
232 if (this.timeSlices[i] !== timeSlice) 232 if (this.timeSlices[i] !== timeSlice)
233 return undefined; 233 return undefined;
234 return i; 234 return i;
235 }, 235 },
236 236
237 /* 237 /*
238 * Returns an object with the CPU number used as keys, 238 * Returns an object with the CPU number used as keys,
239 * and the value of each key object is the amount of milliseconds spent 239 * and the value of each key object is the amount of milliseconds spent
240 * running on this CPU. 240 * running on this CPU.
241 * Additionally, stats.total contains the total time 241 * Additionally, stats.total contains the total time
242 * spent running on all CPUs. 242 * spent running on all CPUs.
243 */ 243 */
244 getCpuStatsForRange: function(range) { 244 getCpuStatsForRange: function(range) {
245 var stats = {}; 245 var stats = {};
246 stats.total = 0; 246 stats.total = 0;
247 247
248 if (!this.timeSlices) 248 if (!this.timeSlices)
249 return stats; 249 return stats;
250 250
251 function addStatsForSlice(threadTimeSlice) { 251 function addStatsForSlice(threadTimeSlice) {
252 var freqRange = tr.b.Range.fromExplicitRange(threadTimeSlice.start, 252 var freqRange = tr.b.math.Range.fromExplicitRange(threadTimeSlice.start,
253 threadTimeSlice.end); 253 threadTimeSlice.end);
254 var intersection = freqRange.findIntersection(range); 254 var intersection = freqRange.findIntersection(range);
255 255
256 if (threadTimeSlice.schedulingState === 256 if (threadTimeSlice.schedulingState ===
257 tr.model.SCHEDULING_STATE.RUNNING) { 257 tr.model.SCHEDULING_STATE.RUNNING) {
258 var cpu = threadTimeSlice.cpuOnWhichThreadWasRunning; 258 var cpu = threadTimeSlice.cpuOnWhichThreadWasRunning;
259 if (!(cpu.cpuNumber in stats)) 259 if (!(cpu.cpuNumber in stats))
260 stats[cpu.cpuNumber] = 0; 260 stats[cpu.cpuNumber] = 0;
261 261
262 stats[cpu.cpuNumber] += intersection.duration; 262 stats[cpu.cpuNumber] += intersection.duration;
263 stats.total += intersection.duration; 263 stats.total += intersection.duration;
264 } 264 }
265 } 265 }
266 266
267 tr.b.iterateOverIntersectingIntervals(this.timeSlices, 267 tr.b.math.iterateOverIntersectingIntervals(this.timeSlices,
268 function(x) { return x.start; }, 268 function(x) { return x.start; },
269 function(x) { return x.end; }, 269 function(x) { return x.end; },
270 range.min, 270 range.min,
271 range.max, 271 range.max,
272 addStatsForSlice); 272 addStatsForSlice);
273 return stats; 273 return stats;
274 }, 274 },
275 275
276 getSchedulingStatsForRange: function(start, end) { 276 getSchedulingStatsForRange: function(start, end) {
277 var stats = {}; 277 var stats = {};
278 278
279 if (!this.timeSlices) return stats; 279 if (!this.timeSlices) return stats;
280 280
281 function addStatsForSlice(threadTimeSlice) { 281 function addStatsForSlice(threadTimeSlice) {
282 var overlapStart = Math.max(threadTimeSlice.start, start); 282 var overlapStart = Math.max(threadTimeSlice.start, start);
283 var overlapEnd = Math.min(threadTimeSlice.end, end); 283 var overlapEnd = Math.min(threadTimeSlice.end, end);
284 var schedulingState = threadTimeSlice.schedulingState; 284 var schedulingState = threadTimeSlice.schedulingState;
285 285
286 if (!(schedulingState in stats)) 286 if (!(schedulingState in stats))
287 stats[schedulingState] = 0; 287 stats[schedulingState] = 0;
288 stats[schedulingState] += overlapEnd - overlapStart; 288 stats[schedulingState] += overlapEnd - overlapStart;
289 } 289 }
290 290
291 tr.b.iterateOverIntersectingIntervals(this.timeSlices, 291 tr.b.math.iterateOverIntersectingIntervals(this.timeSlices,
292 function(x) { return x.start; }, 292 function(x) { return x.start; },
293 function(x) { return x.end; }, 293 function(x) { return x.end; },
294 start, 294 start,
295 end, 295 end,
296 addStatsForSlice); 296 addStatsForSlice);
297 return stats; 297 return stats;
298 }, 298 },
299 299
300 get samples() { 300 get samples() {
301 return this.samples_; 301 return this.samples_;
(...skipping 20 matching lines...) Expand all
322 return tmp; 322 return tmp;
323 323
324 return x.tid - y.tid; 324 return x.tid - y.tid;
325 }; 325 };
326 326
327 return { 327 return {
328 Thread, 328 Thread,
329 }; 329 };
330 }); 330 });
331 </script> 331 </script>
OLDNEW
« no previous file with comments | « tracing/tracing/model/slice_group.html ('k') | tracing/tracing/model/thread_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698