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

Side by Side Diff: tools/telemetry/telemetry/timeline/slice.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import telemetry.timeline.event as timeline_event
6
7
8 class Slice(timeline_event.TimelineEvent):
9 """A Slice represents an interval of time plus parameters associated
10 with that interval.
11
12 NOTE: The Sample class implements the same interface as
13 Slice. These must be kept in sync.
14
15 All time units are stored in milliseconds.
16 """
17 def __init__(self, parent_thread, category, name, timestamp, duration=0,
18 thread_timestamp=None, thread_duration=None, args=None):
19 super(Slice, self).__init__(
20 category, name, timestamp, duration, thread_timestamp, thread_duration,
21 args)
22 self.parent_thread = parent_thread
23 self.parent_slice = None
24 self.sub_slices = []
25 self.did_not_finish = False
26
27 def AddSubSlice(self, sub_slice):
28 assert sub_slice.parent_slice == self
29 self.sub_slices.append(sub_slice)
30
31 def IterEventsInThisContainerRecrusively(self, stack=None):
32 # This looks awkward, but it lets us create only a single iterator instead
33 # of having to create one iterator for every subslice found.
34 if stack == None:
35 stack = []
36 else:
37 assert len(stack) == 0
38 stack.extend(reversed(self.sub_slices))
39 while len(stack):
40 s = stack.pop()
41 yield s
42 stack.extend(reversed(s.sub_slices))
43
44 @property
45 def self_time(self):
46 """Time spent in this function less any time spent in child events."""
47 child_total = sum(
48 [e.duration for e in self.sub_slices])
49 return self.duration - child_total
50
51 @property
52 def self_thread_time(self):
53 """Thread (scheduled) time spent in this function less any thread time spent
54 in child events. Returns None if the slice or any of its children does not
55 have a thread_duration value.
56 """
57 if not self.thread_duration:
58 return None
59
60 child_total = 0
61 for e in self.sub_slices:
62 if e.thread_duration == None:
63 return None
64 child_total += e.thread_duration
65
66 return self.thread_duration - child_total
67
68 def _GetSubSlicesRecursive(self):
69 for sub_slice in self.sub_slices:
70 for s in sub_slice.GetAllSubSlices():
71 yield s
72 yield sub_slice
73
74 def GetAllSubSlices(self):
75 return list(self._GetSubSlicesRecursive())
76
77 def GetAllSubSlicesOfName(self, name):
78 return [e for e in self.GetAllSubSlices() if e.name == name]
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/timeline/sample.py ('k') | tools/telemetry/telemetry/timeline/slice_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698