~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to profile_imports.py

  • Committer: Alexander Belchenko
  • Date: 2006-07-30 16:43:12 UTC
  • mto: (1711.2.111 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060730164312-b025fd3ff0cee59e
rename  gpl.txt => COPYING.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
"""A custom importer and regex compiler which logs time spent."""
19
19
 
26
26
_total_stack = {}
27
27
_info = {}
28
28
_cur_id = 0
29
 
_timer = time.time
30
 
if sys.platform == 'win32':
31
 
    _timer = time.clock
32
29
 
33
30
 
34
31
def stack_add(name, frame_name, frame_lineno, scope_name=None):
85
82
        # scope_name, frame_name, frame_lineno
86
83
        out_file.write('%5.1f %5.1f %s %-35s\t@ %s:%d\n'
87
84
            % (info[-1]*1000., mod_time*1000., '+'*info[0], 
88
 
               cur[1][:35], info[1], info[2]))
 
85
               cur[1][:40], info[1], info[2]))
89
86
 
90
87
        if sorted:
91
88
            c_times.sort()
118
115
    frame = sys._getframe(1)
119
116
    frame_name = frame.f_globals.get('__name__', '<unknown>')
120
117
    extra = ''
 
118
    cur_frame = 1
121
119
    if frame_name.endswith('demandload'):
122
120
        # If this was demandloaded, we have 3 frames to ignore
123
 
        extra = '(demandload) '
124
 
        frame = sys._getframe(4)
125
 
        frame_name = frame.f_globals.get('__name__', '<unknown>')
126
 
    elif frame_name.endswith('lazy_import'):
127
 
        # If this was lazily imported, we have 3 frames to ignore
128
 
        extra = '[l] '
129
 
        frame = sys._getframe(4)
130
 
        frame_name = frame.f_globals.get('__name__', '<unknown>')
131
 
    if fromlist:
132
 
        extra += ' [%s]' % (', '.join(map(str, fromlist)),)
 
121
        extra = ' (demandload)'
 
122
        frame = sys._getframe(4)
 
123
        cur_frame = 4
 
124
        frame_name = frame.f_globals.get('__name__', '<unknown>')
133
125
    frame_lineno = frame.f_lineno
134
126
 
135
 
    this = stack_add(extra + name, frame_name, frame_lineno, scope_name)
 
127
    this = stack_add(name+extra, frame_name, frame_lineno, scope_name)
136
128
 
137
 
    tstart = _timer()
 
129
    tstart = time.time()
138
130
    try:
139
131
        # Do the import
140
132
        mod = _real_import(name, globals, locals, fromlist)
141
133
    finally:
142
 
        tload = _timer()-tstart
 
134
        tload = time.time()-tstart
143
135
        stack_finish(this, tload)
144
136
 
145
137
    return mod
153
145
    # And who is requesting this?
154
146
    frame = sys._getframe(2)
155
147
    frame_name = frame.f_globals.get('__name__', '<unknown>')
156
 
 
157
 
    extra = ''
158
 
    if frame_name.endswith('lazy_regex'):
159
 
        # If this was lazily compiled, we have 3 more frames to ignore
160
 
        extra = '[l] '
161
 
        frame = sys._getframe(5)
162
 
        frame_name = frame.f_globals.get('__name__', '<unknown>')
163
148
    frame_lineno = frame.f_lineno
164
 
    this = stack_add(extra+repr(args[0]), frame_name, frame_lineno)
165
 
 
166
 
    tstart = _timer()
 
149
 
 
150
    this = stack_add(repr(args[0]), frame_name, frame_lineno)
 
151
 
 
152
    tstart = time.time()
167
153
    try:
168
154
        # Measure the compile time
169
155
        comp = _real_compile(*args, **kwargs)
170
156
    finally:
171
 
        tcompile = _timer() - tstart
 
157
        tcompile = time.time() - tstart
172
158
        stack_finish(this, tcompile)
173
159
 
174
160
    return comp