~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to profile_imports.py

  • Committer: Vincent Ladeuil
  • Date: 2010-02-09 17:15:17 UTC
  • mto: (5029.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 5030.
  • Revision ID: v.ladeuil+lp@free.fr-20100209171517-1wzz1nh3d3nhnkbu
Move ReadonlyServer to bzrlib.tests.readonly

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2008, 2009, 2010 by Canonical Ltd
 
1
# Copyright (C) 2006, 2009 by Canonical Ltd
2
2
# Written by John Arbash Meinel <john@arbash-meinel.com>
3
3
#
4
4
# This program is free software; you can redistribute it and/or modify
64
64
 
65
65
def log_stack_info(out_file, sorted=True, hide_fast=True):
66
66
    # Find all of the roots with import = 0
67
 
    out_file.write('%5s %5s %-40s @ %s:%s\n'
68
 
        % ('cum', 'inline', 'name', 'file', 'line'))
 
67
    out_file.write(' cum  inline name\t\t\t\t\t\tframe\n')
69
68
    todo = [(value[-1], key) for key,value in _info.iteritems() if value[0] == 0]
70
69
 
71
70
    if sorted:
90
89
 
91
90
        # indent, cum_time, mod_time, name,
92
91
        # scope_name, frame_name, frame_lineno
93
 
        out_file.write('%5.1f %5.1f %-40s @ %s:%d\n'
94
 
            % (info[-1]*1000., mod_time*1000.,
95
 
               ('+'*info[0] + cur[1]),
96
 
               info[1], info[2]))
 
92
        out_file.write('%5.1f %5.1f %s %-35s\t@ %s:%d\n'
 
93
            % (info[-1]*1000., mod_time*1000., '+'*info[0], 
 
94
               cur[1][:35], info[1], info[2]))
97
95
 
98
96
        if sorted:
99
97
            c_times.sort()
104
102
 
105
103
_real_import = __import__
106
104
 
107
 
def timed_import(name, globals=None, locals=None, fromlist=None, level=None):
 
105
def timed_import(name, globals, locals, fromlist, level=None):
108
106
    """Wrap around standard importer to log import time"""
109
 
    # normally there are 4, but if this is called as __import__ eg by
110
 
    # /usr/lib/python2.6/email/__init__.py then there may be only one
111
 
    # parameter
112
107
    # level is only passed by python2.6
113
108
 
114
 
    if globals is None:
115
 
        # can't determine the scope name afaics; we could peek up the stack to
116
 
        # see where this is being called from, but it should be a rare case.
117
 
        scope_name = None
 
109
    scope_name = globals.get('__name__', None)
 
110
    if scope_name is None:
 
111
        scope_name = globals.get('__file__', None)
 
112
    if scope_name is None:
 
113
        scope_name = globals.keys()
118
114
    else:
119
 
        scope_name = globals.get('__name__', None)
120
 
        if scope_name is None:
121
 
            scope_name = globals.get('__file__', None)
122
 
        if scope_name is None:
123
 
            scope_name = globals.keys()
124
 
        else:
125
 
            # Trim out paths before bzrlib
126
 
            loc = scope_name.find('bzrlib')
127
 
            if loc != -1:
128
 
                scope_name = scope_name[loc:]
129
 
            # For stdlib, trim out early paths
130
 
            loc = scope_name.find('python2.4')
131
 
            if loc != -1:
132
 
                scope_name = scope_name[loc:]
 
115
        # Trim out paths before bzrlib
 
116
        loc = scope_name.find('bzrlib')
 
117
        if loc != -1:
 
118
            scope_name = scope_name[loc:]
 
119
        # For stdlib, trim out early paths
 
120
        loc = scope_name.find('python2.4')
 
121
        if loc != -1:
 
122
            scope_name = scope_name[loc:]
133
123
 
134
124
    # Figure out the frame that is doing the importing
135
125
    frame = sys._getframe(1)