~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to profile_imports.py

  • Committer: John Arbash Meinel
  • Date: 2006-06-18 02:28:47 UTC
  • mto: This revision was merged to the branch mainline in revision 1794.
  • Revision ID: john@arbash-meinel.com-20060618022847-abd388b959fcf72e
It seems you cannot override __builtins__.__import__ in a sub-module.

Clean up module so that it makes more sense as an import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
"""A custom importer and regex compiler which logs time."""
 
17
"""A custom importer and regex compiler which logs time spent."""
18
18
 
19
19
import os
 
20
import sre
20
21
import sys
21
22
import time
22
 
import sre
23
 
 
24
 
 
25
 
_import_logfile = sys.stderr
26
 
_compile_logfile = sys.stderr
 
23
 
 
24
 
 
25
import_logfile = sys.stderr
 
26
compile_logfile = sys.stderr
27
27
 
28
28
_real_import = __import__
29
29
 
30
 
def _custom_import(name, globals, locals, fromlist):
 
30
def timed_import(name, globals, locals, fromlist):
31
31
    """Wrap around standard importer to log import time"""
32
 
    if _import_logfile is None:
 
32
    if import_logfile is None:
33
33
        return _real_import(name, globals, locals, fromlist)
34
34
 
35
35
    scope_name = globals.get('__name__', None)
66
66
    frame_lineno = frame.f_lineno
67
67
 
68
68
    # Log the import
69
 
    _import_logfile.write('%3.0fms %-24s\tfor %-24s\t@ %s:%d%s\n' 
 
69
    import_logfile.write('%3.0fms %-24s\tfor %-24s\t@ %s:%d%s\n' 
70
70
        % ((time.time()-tstart)*1000, name, scope_name,
71
71
            frame_name, frame_lineno, extra))
72
72
 
84
84
                        f.f_lineno)
85
85
                    )
86
86
        if stack:
87
 
            _import_logfile.write('\t' + ' '.join(stack) + '\n')
 
87
            import_logfile.write('\t' + ' '.join(stack) + '\n')
88
88
    return mod
89
89
 
90
90
 
91
91
_real_compile = sre._compile
92
92
 
93
 
def _custom_compile(*args, **kwargs):
 
93
def timed_compile(*args, **kwargs):
94
94
    """Log how long it takes to compile a regex"""
95
 
    if _compile_logfile is None:
 
95
    if compile_logfile is None:
96
96
        return _real_compile(*args, **kwargs)
97
97
 
98
98
    # Measure the compile time
103
103
    frame = sys._getframe(2)
104
104
    frame_name = frame.f_globals.get('__name__', '<unknown>')
105
105
    frame_lineno = frame.f_lineno
106
 
    _compile_logfile.write('%3.0fms %-40r\t@ %s:%d\n'
 
106
    compile_logfile.write('%3.0fms %-40r\t@ %s:%d\n'
107
107
        % ((time.time()-tstart)*1000, args[0][:40], 
108
108
            frame_name, frame_lineno))
109
109
    return comp
110
 
 
111
 
__builtins__.__import__ = _custom_import
112
 
sre._compile = _custom_compile