aboutsummaryrefslogtreecommitdiffstats
path: root/debug_toolbar/panels/timer.py
diff options
context:
space:
mode:
Diffstat (limited to 'debug_toolbar/panels/timer.py')
-rw-r--r--debug_toolbar/panels/timer.py81
1 files changed, 35 insertions, 46 deletions
diff --git a/debug_toolbar/panels/timer.py b/debug_toolbar/panels/timer.py
index 900b624..6df4d4d 100644
--- a/debug_toolbar/panels/timer.py
+++ b/debug_toolbar/panels/timer.py
@@ -1,9 +1,9 @@
from __future__ import absolute_import, unicode_literals
try:
- import resource
+ import resource # Not available on Win32 systems
except ImportError:
- pass # Will fail on Win32 systems
+ resource = None
import time
from django.template.loader import render_to_string
from django.utils.translation import ugettext as _
@@ -14,21 +14,44 @@ class TimerPanel(Panel):
"""
Panel that displays the time a response took in milliseconds.
"""
- name = 'Timer'
+
+ def nav_subtitle(self):
+ stats = self.get_stats()
+ if hasattr(self, '_start_rusage'):
+ utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime
+ stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime
+ return _('CPU: %(cum)0.2fms (%(total)0.2fms)') % {
+ 'cum': (utime + stime) * 1000.0,
+ 'total': stats['total_time']
+ }
+ elif 'total_time' in stats:
+ return _('TOTAL: %0.2fms') % stats['total_time']
+ else:
+ return ''
+
+ has_content = resource is not None
+
+ title = _('Time')
+
template = 'debug_toolbar/panels/timer.html'
- try: # if resource module not available, don't show content panel
- resource
- except NameError:
- has_content = False
- has_resource = False
- else:
- has_content = True
- has_resource = True
+ @property
+ def content(self):
+ stats = self.get_stats()
+ rows = (
+ (_('User CPU time'), _('%(utime)0.3f msec') % stats),
+ (_('System CPU time'), _('%(stime)0.3f msec') % stats),
+ (_('Total CPU time'), _('%(total)0.3f msec') % stats),
+ (_('Elapsed time'), _('%(total_time)0.3f msec') % stats),
+ (_('Context switches'), _('%(vcsw)d voluntary, %(ivcsw)d involuntary') % stats),
+ )
+ context = self.context.copy()
+ context.update({'rows': rows})
+ return render_to_string(self.template, context)
def process_request(self, request):
self._start_time = time.time()
- if self.has_resource:
+ if self.has_content:
self._start_rusage = resource.getrusage(resource.RUSAGE_SELF)
def process_response(self, request, response):
@@ -58,39 +81,5 @@ class TimerPanel(Panel):
self.record_stats(stats)
- def nav_title(self):
- return _('Timer')
-
- def nav_subtitle(self):
- stats = self.get_stats()
-
- if hasattr(self, '_start_rusage'):
- utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime
- stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime
- return _('CPU: %(cum)0.2fms (%(total)0.2fms)') % {
- 'cum': (utime + stime) * 1000.0,
- 'total': stats['total_time']
- }
- elif 'total_time' in stats:
- return _('TOTAL: %0.2fms') % stats['total_time']
- else:
- return ''
-
- def title(self):
- return _('Time')
-
def _elapsed_ru(self, name):
return getattr(self._end_rusage, name) - getattr(self._start_rusage, name)
-
- def content(self):
- stats = self.get_stats()
- rows = (
- (_('User CPU time'), _('%(utime)0.3f msec') % stats),
- (_('System CPU time'), _('%(stime)0.3f msec') % stats),
- (_('Total CPU time'), _('%(total)0.3f msec') % stats),
- (_('Elapsed time'), _('%(total_time)0.3f msec') % stats),
- (_('Context switches'), _('%(vcsw)d voluntary, %(ivcsw)d involuntary') % stats),
- )
- context = self.context.copy()
- context.update({'rows': rows})
- return render_to_string(self.template, context)