Add Python implementation to the machine details.

Pretty-print the Python version used for running PyBench.

Let the user know when calibration has finished.

[ 1563844 ] pybench support for IronPython:

Simplify Unicode version detection.

Make garbage collection and check interval settings optional if
the Python implementation doesn't support thess (e.g. IronPython).
This commit is contained in:
Marc-André Lemburg 2007-01-13 22:59:36 +00:00
parent 10514a70ac
commit a50e6233f5
1 changed files with 43 additions and 27 deletions

View File

@ -34,7 +34,7 @@ NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
"""
import sys, time, operator, string
import sys, time, operator, string, platform
from CommandLine import *
try:
@ -102,27 +102,26 @@ def get_timer(timertype):
def get_machine_details():
import platform
if _debug:
print 'Getting machine details...'
buildno, builddate = platform.python_build()
python = platform.python_version()
if python > '2.0':
try:
unichr(100000)
except ValueError:
# UCS2 build (standard)
unicode = 'UCS2'
else:
# UCS4 build (most recent Linux distros)
unicode = 'UCS4'
else:
try:
unichr(100000)
except ValueError:
# UCS2 build (standard)
unicode = 'UCS2'
except NameError:
unicode = None
else:
# UCS4 build (most recent Linux distros)
unicode = 'UCS4'
bits, linkage = platform.architecture()
return {
'platform': platform.platform(),
'processor': platform.processor(),
'executable': sys.executable,
'implementation': platform.python_implementation(),
'python': platform.python_version(),
'compiler': platform.python_compiler(),
'buildno': buildno,
@ -134,17 +133,18 @@ def get_machine_details():
def print_machine_details(d, indent=''):
l = ['Machine Details:',
' Platform ID: %s' % d.get('platform', 'n/a'),
' Processor: %s' % d.get('processor', 'n/a'),
' Platform ID: %s' % d.get('platform', 'n/a'),
' Processor: %s' % d.get('processor', 'n/a'),
'',
'Python:',
' Executable: %s' % d.get('executable', 'n/a'),
' Version: %s' % d.get('python', 'n/a'),
' Compiler: %s' % d.get('compiler', 'n/a'),
' Bits: %s' % d.get('bits', 'n/a'),
' Build: %s (#%s)' % (d.get('builddate', 'n/a'),
d.get('buildno', 'n/a')),
' Unicode: %s' % d.get('unicode', 'n/a'),
' Implementation: %s' % d.get('implementation', 'n/a'),
' Executable: %s' % d.get('executable', 'n/a'),
' Version: %s' % d.get('python', 'n/a'),
' Compiler: %s' % d.get('compiler', 'n/a'),
' Bits: %s' % d.get('bits', 'n/a'),
' Build: %s (#%s)' % (d.get('builddate', 'n/a'),
d.get('buildno', 'n/a')),
' Unicode: %s' % d.get('unicode', 'n/a'),
]
print indent + string.join(l, '\n' + indent) + '\n'
@ -499,8 +499,9 @@ class Benchmark:
def calibrate(self):
print 'Calibrating tests. Please wait...'
print 'Calibrating tests. Please wait...',
if self.verbose:
print
print
print 'Test min max'
print '-' * LINE
@ -514,6 +515,11 @@ class Benchmark:
(name,
min(test.overhead_times) * MILLI_SECONDS,
max(test.overhead_times) * MILLI_SECONDS)
if self.verbose:
print
print 'Done with the calibration.'
else:
print 'done.'
print
def run(self):
@ -830,7 +836,9 @@ python pybench.py -s p25.pybench -c p21.pybench
print '-' * LINE
print 'PYBENCH %s' % __version__
print '-' * LINE
print '* using Python %s' % (string.split(sys.version)[0])
print '* using %s %s' % (
platform.python_implementation(),
string.join(string.split(sys.version), ' '))
# Switch off garbage collection
if not withgc:
@ -839,15 +847,23 @@ python pybench.py -s p25.pybench -c p21.pybench
except ImportError:
print '* Python version doesn\'t support garbage collection'
else:
gc.disable()
print '* disabled garbage collection'
try:
gc.disable()
except NotImplementedError:
print '* Python version doesn\'t support gc.disable'
else:
print '* disabled garbage collection'
# "Disable" sys check interval
if not withsyscheck:
# Too bad the check interval uses an int instead of a long...
value = 2147483647
sys.setcheckinterval(value)
print '* system check interval set to maximum: %s' % value
try:
sys.setcheckinterval(value)
except NotImplementedError:
print '* Python version doesn\'t support sys.setcheckinterval'
else:
print '* system check interval set to maximum: %s' % value
if timer == TIMER_SYSTIMES_PROCESSTIME:
import systimes