From a4dac4094acd35810b1497bbf99642fc98afd475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Thu, 3 Mar 2005 11:39:45 +0000 Subject: Patch #645894: Use getrusage for computing the time consumption in profile.py if available. --- Lib/profile.py | 22 ++++++++++++++++++++-- Misc/NEWS | 3 +++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Lib/profile.py b/Lib/profile.py index 8815ac3..5a29bd6 100755 --- a/Lib/profile.py +++ b/Lib/profile.py @@ -107,6 +107,20 @@ if hasattr(os, "times"): t = timer() return t[0] + t[1] +# Using getrusage(3) is better than clock(3) if available: +# on some systems (e.g. FreeBSD), getrusage has a higher resolution +# Furthermore, on a POSIX system, returns microseconds, which +# wrap around after 36min. +_has_res = 0 +try: + import resource + resgetrusage = lambda: resource.getrusage(resource.RUSAGE_SELF) + def _get_time_resource(timer=resgetrusage): + t = timer() + return t[0] + t[1] + _has_res = 1 +except ImportError: + pass class Profile: """Profiler class. @@ -159,8 +173,12 @@ class Profile: bias = self.bias self.bias = bias # Materialize in local dict for lookup speed. - if timer is None: - if os.name == 'mac': + if not timer: + if _has_res: + self.timer = resgetrusage + self.dispatcher = self.trace_dispatch + self.get_time = _get_time_resource + elif os.name == 'mac': self.timer = MacOS.GetTicks self.dispatcher = self.trace_dispatch_mac self.get_time = _get_time_mac diff --git a/Misc/NEWS b/Misc/NEWS index 708404d..d0a8118 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -64,6 +64,9 @@ Extension Modules Library ------- +- Patch #645894: Use getrusage for computing the time consumption in + profile.py if available. + - Patch #1046831: Use get_python_version where appropriate in sysconfig.py. - Patch #1117454: Remove code to special-case cookies without values -- cgit v0.12