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

Side by Side Diff: tools/cygprofile/mergetraces.py

Issue 873003003: Speed up mergetraces.py. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 # Use: ../mergetraces.py `ls cyglog.* -Sr` > merged_cyglog 6 # Use: ../mergetraces.py `ls cyglog.* -Sr` > merged_cyglog
7 7
8 """"Merge multiple logs files from different processes into a single log. 8 """"Merge multiple logs files from different processes into a single log.
9 9
10 Given two log files of execution traces, merge the traces into a single trace. 10 Given two log files of execution traces, merge the traces into a single trace.
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 """Converts the call addresses to static offsets and removes invalid calls. 94 """Converts the call addresses to static offsets and removes invalid calls.
95 95
96 Removes profiled calls not in shared library using start and end virtual 96 Removes profiled calls not in shared library using start and end virtual
97 addresses, converts strings to integer values, coverts virtual addresses to 97 addresses, converts strings to integer values, coverts virtual addresses to
98 address in shared library. 98 address in shared library.
99 99
100 Returns: 100 Returns:
101 list of calls as tuples (sec, usec, pid:tid, callee) 101 list of calls as tuples (sec, usec, pid:tid, callee)
102 """ 102 """
103 converted_calls = [] 103 converted_calls = []
104 call_addresses = [] 104 call_addresses = set()
105 for fields in call_lines: 105 for fields in call_lines:
106 secs = int (fields[0]) 106 secs = int (fields[0])
107 usecs = int (fields[1]) 107 usecs = int (fields[1])
108 callee = int (fields[3], 16) 108 callee = int (fields[3], 16)
109 # print ("callee: " + hex (callee) + " start: " + hex (startAddr) + " end: " 109 # print ("callee: " + hex (callee) + " start: " + hex (startAddr) + " end: "
110 # + hex (endAddr)) 110 # + hex (endAddr))
111 if (callee >= startAddr and callee < endAddr 111 if (callee >= startAddr and callee < endAddr
112 and (not callee in call_addresses)): 112 and (not callee in call_addresses)):
113 converted_calls.append((secs, usecs, fields[2], (callee - startAddr))) 113 converted_calls.append((secs, usecs, fields[2], (callee - startAddr)))
114 call_addresses.append(callee) 114 call_addresses.add(callee)
115 return converted_calls 115 return converted_calls
116 116
117 def Timestamp(trace_entry): 117 def Timestamp(trace_entry):
118 return int (trace_entry[0]) * 1000000 + int(trace_entry[1]) 118 return int (trace_entry[0]) * 1000000 + int(trace_entry[1])
119 119
120 def AddTrace (tracemap, trace): 120 def AddTrace (tracemap, trace):
121 """Adds a trace to the tracemap. 121 """Adds a trace to the tracemap.
122 122
123 Adds entries in the trace to the tracemap. All new calls will be added to 123 Adds entries in the trace to the tracemap. All new calls will be added to
124 the tracemap. If the calls already exist in the tracemap then they will be 124 the tracemap. If the calls already exist in the tracemap then they will be
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 grouped_trace = GroupByProcessAndThreadId(merged_trace) 229 grouped_trace = GroupByProcessAndThreadId(merged_trace)
230 230
231 print "0-ffffffff r-xp 00000000 xx:00 00000 ./" 231 print "0-ffffffff r-xp 00000000 xx:00 00000 ./"
232 print "secs\tusecs\tpid:threadid\tfunc" 232 print "secs\tusecs\tpid:threadid\tfunc"
233 for call in grouped_trace: 233 for call in grouped_trace:
234 print (str(call[0]) + "\t" + str(call[1]) + "\t" + call[2] + "\t" + 234 print (str(call[0]) + "\t" + str(call[1]) + "\t" + call[2] + "\t" +
235 hex(call[3])) 235 hex(call[3]))
236 236
237 if __name__ == '__main__': 237 if __name__ == '__main__':
238 main() 238 main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698