benchmark.py
Verfasst: Freitag 3. Juni 2005, 13:48
Hab einen kleinen Benchmark zusammen getippert... Nix besonderes und nicht wirklich ein allumfassender Test
Aber ich wollte mal die Preformance eines Webservers mit meinem Rechner vergleichen
Aber ich wollte mal die Preformance eines Webservers mit meinem Rechner vergleichen
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-
"""
small system Benchmark by jensdiemer.de
used fak_test by Dookie alias Fritz Cizmarov
"""
__version__ = "0.0.1"
### History
# v0.0.1
# - erste Version
import time
start_time = time.time()
import os, random, sys, operator
if sys.version_info[:2] < (2,2):
raise SystemError("need at least Version 2.2 of Python")
rnd_mem_size = 10000
rnd_mem_count = 100
rnd_disk_size = 1000
rnd_disk_count = 1000
norm_disk_MBsize= 30
norm_disk_count = 1000
fak_num = 100000
class benchmark:
def __init__( self ):
self.rnd_mem_test()
self.rnd_disk_test()
self.fak_test()
print "="*80
print "complete test duration:"
print "%.2fsec" % (time.time() - start_time)
print "="*80
def print_process( self, i, total ):
"allg. Fortschrittanzeige"
i += 1
tresh = total / 10
if tresh == 0:
tresh = 1
if i % tresh == 0:
duration = time.time() - start_time
print "%3.i%% %4.i/%i %.2fsec" % ( round(float(i)/total*100), i, total, duration)
def rnd_mem_test( self ):
print "Random-MEM Test"
print "-"*80
print "Creating %i random-Blocks with a Size of %iBytes" % ( rnd_mem_count, rnd_mem_size )
for i in range( rnd_mem_count ):
trash = [ chr( random.randint(0,255) ) for r in range(rnd_mem_size) ]
self.print_process(i, rnd_mem_count)
def rnd_disk_test( self ):
print
print "Random-DISK Test"
try:
testfile = file( "benchtest.tmp", "w" )
except Exception, e:
print "Can't create Testfile:",e
sys.exit(1)
print "-"*80
KBsize = rnd_disk_count * rnd_disk_size / 1024
print "Write %i random-Blocks à %iBytes (total %iKB)" % ( rnd_disk_count, rnd_disk_size, KBsize )
for i in range( rnd_disk_count ):
testfile.write(
"".join( [ chr( random.randint(0,255) ) for r in range(rnd_disk_size) ] )
)
self.print_process(i, rnd_disk_count)
testfile.close()
testfile = file( "benchtest.tmp", "w" )
print "-"*80
print "Test Disk writing speed"
blockMBsize = norm_disk_MBsize * 1024
MBytes = blockMBsize * norm_disk_count / 1024 / 1024
print "Writes %iMBytes (NULL-Bytes)" % ( MBytes )
NULLblock = " " * blockMBsize
disk_start_time = time.time()
for i in xrange( norm_disk_count ):
testfile.write( NULLblock )
self.print_process( i, norm_disk_count )
disk_end_time = time.time()
testfile.close()
print "-"*80
print "%iMB/sec" % ( MBytes / ( disk_end_time-disk_start_time ) )
try:
# lösche Inhalt des Tempfile
testfile = file( "benchtest.tmp", "w" )
testfile.close()
except:
pass
try:
# Lösche Datei selber
os.remove( "benchtest.tmp" )
except Exception, e:
print "Can't delete Testfile:",e
sys.exit(1)
def fak_test( self ):
print
print "fak Test"
print "-"*80
def fak_recursive(n):
if n > 2:
return n * fak_recursive(n-1)
else:
return n
def fak_iter_while(n):
res = n
while n > 2:
n -= 1 # entspricht n = n - 1
res *= n # ginge auch als res = res * n
return res
def fak_iter_for(n):
res = n
for n in xrange(2,n):
res *= n
return res
fak_lambda = lambda n: reduce(operator.mul, xrange(2,n),n)
def test(funktion_name, f):
print "%16s: %d Berechnungen..." % (funktion_name, fak_num),
values = range(1,101)*(fak_num/100)
t_start = time.time()
for val in values:
tmp = f(val)
print "%.2fsec" % (time.time() - start_time)
test("fak_recursive", fak_recursive)
test("fak_iter_while", fak_iter_while)
test("fak_iter_for", fak_iter_for)
test("fak_lambda", fak_lambda)
if __name__ == "__main__":
benchmark()