diff options
Diffstat (limited to 'debug_toolbar/panels/profiling.py')
| -rw-r--r-- | debug_toolbar/panels/profiling.py | 47 | 
1 files changed, 2 insertions, 45 deletions
| diff --git a/debug_toolbar/panels/profiling.py b/debug_toolbar/panels/profiling.py index f4d32c4..eacd62c 100644 --- a/debug_toolbar/panels/profiling.py +++ b/debug_toolbar/panels/profiling.py @@ -2,16 +2,8 @@ from __future__ import absolute_import, division, unicode_literals  from django.utils.translation import ugettext_lazy as _  from django.utils.safestring import mark_safe -from django.utils.six.moves import cStringIO  from debug_toolbar.panels import Panel -try: -    from line_profiler import LineProfiler, show_func -    DJ_PROFILE_USE_LINE_PROFILER = True -except ImportError: -    DJ_PROFILE_USE_LINE_PROFILER = False - -  import cProfile  from pstats import Stats  from colorsys import hsv_to_rgb @@ -43,7 +35,6 @@ class FunctionCall(object):          self.id = id          self.parent_ids = parent_ids          self.hsv = hsv -        self._line_stats_text = None      def parent_classes(self):          return self.parent_classes @@ -127,18 +118,6 @@ class FunctionCall(object):      def indent(self):          return 16 * self.depth -    def line_stats_text(self): -        if self._line_stats_text is None and DJ_PROFILE_USE_LINE_PROFILER: -            lstats = self.statobj.line_stats -            if self.func in lstats.timings: -                out = cStringIO() -                fn, lineno, name = self.func -                show_func(fn, lineno, name, lstats.timings[self.func], lstats.unit, stream=out) -                self._line_stats_text = out.getvalue() -            else: -                self._line_stats_text = False -        return self._line_stats_text -  class ProfilingPanel(Panel):      """ @@ -148,37 +127,17 @@ class ProfilingPanel(Panel):      template = 'debug_toolbar/panels/profiling.html' -    def _unwrap_closure_and_profile(self, func): -        if not hasattr(func, '__code__'): -            return -        self.line_profiler.add_function(func) -        if func.__closure__: -            for cell in func.__closure__: -                if hasattr(cell.cell_contents, '__code__'): -                    self._unwrap_closure_and_profile(cell.cell_contents) -      def process_view(self, request, view_func, view_args, view_kwargs):          self.profiler = cProfile.Profile()          args = (request,) + view_args -        if DJ_PROFILE_USE_LINE_PROFILER: -            self.line_profiler = LineProfiler() -            self._unwrap_closure_and_profile(view_func) -            self.line_profiler.enable_by_count() -            out = self.profiler.runcall(view_func, *args, **view_kwargs) -            self.line_profiler.disable_by_count() -        else: -            self.line_profiler = None -            out = self.profiler.runcall(view_func, *args, **view_kwargs) -        return out +        return self.profiler.runcall(view_func, *args, **view_kwargs)      def add_node(self, func_list, func, max_depth, cum_time=0.1):          func_list.append(func)          func.has_subfuncs = False          if func.depth < max_depth:              for subfunc in func.subfuncs(): -                if (subfunc.stats[3] >= cum_time or -                        (hasattr(self.stats, 'line_stats') and -                            (subfunc.func in self.stats.line_stats.timings))): +                if subfunc.stats[3] >= cum_time:                      func.has_subfuncs = True                      self.add_node(func_list, subfunc, max_depth, cum_time=cum_time) @@ -188,8 +147,6 @@ class ProfilingPanel(Panel):          # Could be delayed until the panel content is requested (perf. optim.)          self.profiler.create_stats()          self.stats = DjangoDebugToolbarStats(self.profiler) -        if DJ_PROFILE_USE_LINE_PROFILER: -            self.stats.line_stats = self.line_profiler.get_stats()          self.stats.calc_callees()          root = FunctionCall(self.stats, self.stats.get_root_func(), depth=0) | 
