~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/lsprof.py

  • Committer: Robert Collins
  • Date: 2007-10-22 01:23:51 UTC
  • mfrom: (2921.3.1 graph)
  • mto: This revision was merged to the branch mainline in revision 2933.
  • Revision ID: robertc@robertcollins.net-20071022012351-16lm27an2lbzk038
Merge graph history-access bugfix.

Show diffs side-by-side

added added

removed removed

Lines of Context:
167
167
 
168
168
    def output(self, out_file):
169
169
        self.out_file = out_file        
170
 
        print >> out_file, 'events: Ticks'
 
170
        out_file.write('events: Ticks\n')
171
171
        self._print_summary()
172
172
        for entry in self.data:
173
173
            self._entry(entry)
177
177
        for entry in self.data:
178
178
            totaltime = int(entry.totaltime * 1000)
179
179
            max_cost = max(max_cost, totaltime)
180
 
        print >> self.out_file, 'summary: %d' % (max_cost,)
 
180
        self.out_file.write('summary: %d\n' % (max_cost,))
181
181
 
182
182
    def _entry(self, entry):
183
183
        out_file = self.out_file
184
184
        code = entry.code
185
185
        inlinetime = int(entry.inlinetime * 1000)
186
 
        #print >> out_file, 'ob=%s' % (code.co_filename,)
187
 
        if isinstance(code, str):
188
 
            print >> out_file, 'fi=~'
189
 
        else:
190
 
            print >> out_file, 'fi=%s' % (code.co_filename,)
191
 
        print >> out_file, 'fn=%s' % (label(code, True),)
192
 
        if isinstance(code, str):
193
 
            print >> out_file, '0 ', inlinetime
194
 
        else:
195
 
            print >> out_file, '%d %d' % (code.co_firstlineno, inlinetime)
 
186
        #out_file.write('ob=%s\n' % (code.co_filename,))
 
187
        if isinstance(code, str):
 
188
            out_file.write('fi=~\n')
 
189
        else:
 
190
            out_file.write('fi=%s\n' % (code.co_filename,))
 
191
        out_file.write('fn=%s\n' % (label(code, True),))
 
192
        if isinstance(code, str):
 
193
            out_file.write('0  %s\n' % (inlinetime,))
 
194
        else:
 
195
            out_file.write('%d %d\n' % (code.co_firstlineno, inlinetime))
196
196
        # recursive calls are counted in entry.calls
197
197
        if entry.calls:
198
198
            calls = entry.calls
204
204
            lineno = code.co_firstlineno
205
205
        for subentry in calls:
206
206
            self._subentry(lineno, subentry)
207
 
        print >> out_file
 
207
        out_file.write('\n')
208
208
 
209
209
    def _subentry(self, lineno, subentry):
210
210
        out_file = self.out_file
211
211
        code = subentry.code
212
212
        totaltime = int(subentry.totaltime * 1000)
213
 
        #print >> out_file, 'cob=%s' % (code.co_filename,)
214
 
        print >> out_file, 'cfn=%s' % (label(code, True),)
 
213
        #out_file.write('cob=%s\n' % (code.co_filename,))
 
214
        out_file.write('cfn=%s\n' % (label(code, True),))
215
215
        if isinstance(code, str):
216
 
            print >> out_file, 'cfi=~'
217
 
            print >> out_file, 'calls=%d 0' % (subentry.callcount,)
 
216
            out_file.write('cfi=~\n')
 
217
            out_file.write('calls=%d 0\n' % (subentry.callcount,))
218
218
        else:
219
 
            print >> out_file, 'cfi=%s' % (code.co_filename,)
220
 
            print >> out_file, 'calls=%d %d' % (
221
 
                subentry.callcount, code.co_firstlineno)
222
 
        print >> out_file, '%d %d' % (lineno, totaltime)
 
219
            out_file.write('cfi=%s\n' % (code.co_filename,))
 
220
            out_file.write('calls=%d %d\n' % (
 
221
                subentry.callcount, code.co_firstlineno))
 
222
        out_file.write('%d %d\n' % (lineno, totaltime))
223
223
 
224
224
_fn2mod = {}
225
225
 
251
251
    import os
252
252
    sys.argv = sys.argv[1:]
253
253
    if not sys.argv:
254
 
        print >> sys.stderr, "usage: lsprof.py <script> <arguments...>"
 
254
        sys.stderr.write("usage: lsprof.py <script> <arguments...>\n")
255
255
        sys.exit(2)
256
256
    sys.path.insert(0, os.path.abspath(os.path.dirname(sys.argv[0])))
257
257
    stats = profile(execfile, sys.argv[0], globals(), locals())