/[thuban]/branches/WIP-pyshapelib-bramz/Extensions/profiling/profiling.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Extensions/profiling/profiling.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1901 by jan, Fri Oct 31 16:05:29 2003 UTC revision 2203 by jan, Tue May 11 22:34:49 2004 UTC
# Line 32  from wxPython.lib.dialogs import wxScrol Line 32  from wxPython.lib.dialogs import wxScrol
32    
33  from Thuban import _  from Thuban import _
34  from Thuban.UI.command import registry, Command  from Thuban.UI.command import registry, Command
35  import Thuban.UI.mainwindow  from Thuban.UI.mainwindow import main_menu
36    
37  #  #
38  # Customization  # Customization
# Line 48  profiler_bias = 0 Line 48  profiler_bias = 0
48  tempfile.mktemp()  tempfile.mktemp()
49  profile_dir = tempfile.tempdir  profile_dir = tempfile.tempdir
50    
51    # Wether to pop up a dialog box with the result.
52    popup_dialog_box = True
53    
54    
55  #  #
56  #       Timing and profiling a complete redraw  #       Timing and profiling a complete redraw
# Line 81  def profile_screen_renderer(context): Line 84  def profile_screen_renderer(context):
84      how to access the data in the generated .profile file.      how to access the data in the generated .profile file.
85      """      """
86      print "profiling screen renderer...",      print "profiling screen renderer...",
87        sys.stdout.flush()
88      prof = profile.Profile(bias = profiler_bias)      prof = profile.Profile(bias = profiler_bias)
89      prof.runctx("do_redraw(context)", globals(), locals())      prof.runctx("do_redraw(context)", globals(), locals())
90      filename = os.path.join(profile_dir, "thuban-render.profile")      filename = os.path.join(profile_dir, "thuban-render.profile")
91      prof.dump_stats(filename)      prof.dump_stats(filename)
92      print "done and saved to", filename      print "done and saved to", filename
93    
94      # catch the printout to stdout so that we can present the      if popup_dialog_box:
95      # text in a dialog          # catch the printout to stdout so that we can present the
96      f = StringIO.StringIO()          # text in a dialog
97      orig_stdout = sys.stdout          f = StringIO.StringIO()
98      sys.stdout = f          orig_stdout = sys.stdout
99      try:          sys.stdout = f
100          p = pstats.Stats(filename)          try:
101          msg = _('These are the statistics sorted by cumulative time:')              p = pstats.Stats(filename)
102          p.strip_dirs().sort_stats('cumulative').print_stats()              msg = _('These are the statistics sorted by cumulative time:')
103          m = f.getvalue()              p.strip_dirs().sort_stats('cumulative').print_stats()
104          msg = '%s\n\n%s' % (msg, m)              m = f.getvalue()
105      finally:              msg = '%s\n\n%s' % (msg, m)
106          sys.stdout = orig_stdout          finally:
107                sys.stdout = orig_stdout
108      dlg = wxScrolledMessageDialog(context.mainwindow, msg,  
109                                    _('Profile Screen Render'))          dlg = wxScrolledMessageDialog(context.mainwindow, msg,
110      dlg.ShowModal()                                        _('Profile Screen Render'))
111            dlg.ShowModal()
112    
113    
114  registry.Add(Command("profile_screen_renderer", _('Profile Screen Render'),  registry.Add(Command("profile_screen_renderer", _('Profile Screen Render'),
# Line 124  def time_screen_renderer(context): Line 129  def time_screen_renderer(context):
129      do_redraw(context)      do_redraw(context)
130      duration = time.clock() - start      duration = time.clock() - start
131      msg = _('Redraw finished in %g seconds.') % duration      msg = _('Redraw finished in %g seconds.') % duration
132      context.mainwindow.RunMessageBox(_('Time Screen Render'), msg)      if popup_dialog_box:
133            context.mainwindow.RunMessageBox(_('Time Screen Render'), msg)
134        else:
135            print msg
136    
137    
138  registry.Add(Command("time_screen_renderer", _('Time Screen Render'),  registry.Add(Command("time_screen_renderer", _('Time Screen Render'),
139                       time_screen_renderer,                       time_screen_renderer,
140                       helptext = _('Time the screen render')))                       helptext = _('Time the screen render')))
141    
   
142  # find the extensions menu (create it anew if not found)  # find the extensions menu (create it anew if not found)
143  main_menu = Thuban.UI.mainwindow.main_menu  extensions_menu = main_menu.FindOrInsertMenu('extensions', _('E&xtensions'))
 extensions_menu = main_menu.find_menu('extensions')  
 if extensions_menu is None:  
     extensions_menu = main_menu.InsertMenu('extensions', _('E&xtensions'))  
144    
145  profiler_menu = extensions_menu.InsertMenu("profiler", _('&Profiler'))  profiler_menu = extensions_menu.InsertMenu("profiler", _('&Profiler'))
146  profiler_menu.InsertItem("time_screen_renderer")  profiler_menu.InsertItem("time_screen_renderer")

Legend:
Removed from v.1901  
changed lines
  Added in v.2203

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26