OLD | NEW |
| (Empty) |
1 # Copyright (c) 2013 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 class TimelineEvent(object): | |
6 """Represents a timeline event.""" | |
7 def __init__(self, name, start_time_ms, duration_ms, args=None): | |
8 self.name = name | |
9 self.start_time_ms = start_time_ms | |
10 self.duration_ms = duration_ms | |
11 self.children = [] | |
12 self.args = args | |
13 | |
14 @property | |
15 def end_time_ms(self): | |
16 return self.start_time_ms + self.duration_ms | |
17 | |
18 @property | |
19 def self_time_ms(self): | |
20 """Time spent in this function less any time spent in child events.""" | |
21 child_total = sum( | |
22 [e.duration_ms for e in self.children]) | |
23 return self.duration_ms - child_total | |
24 | |
25 def __repr__(self): | |
26 if self.args: | |
27 args_str = ', ' + repr(self.args) | |
28 else: | |
29 args_str = '' | |
30 | |
31 return "TimelineEvent(name='%s', start_ms=%f, duration_ms=%s%s)" % ( | |
32 self.name, | |
33 self.start_time_ms, | |
34 self.duration_ms, | |
35 args_str) | |
36 | |
37 @staticmethod | |
38 def _GetAllChildrenRecursive(events, item): | |
39 events.append(item) | |
40 for child in item.children: | |
41 TimelineEvent._GetAllChildrenRecursive(events, child) | |
42 | |
43 def GetAllChildrenRecursive(self, include_self=False): | |
44 events = [] | |
45 TimelineEvent._GetAllChildrenRecursive(events, self) | |
46 if not include_self: | |
47 del events[0] | |
48 return events | |
OLD | NEW |