Advertisement
johnmahugu

python snippets - benchmark

Jul 6th, 2015
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.40 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3.  
  4. """
  5. small system Benchmark
  6. used fak_test by Dookie alias Fritz Cizmarov
  7. """
  8.  
  9. __version__ = "0.0.1"
  10.  
  11. ### History
  12. # v0.0.1
  13. # 1st version
  14.  
  15. import time
  16. start_time = time.time()
  17.  
  18. import os, random, sys, operator
  19.  
  20.  
  21. if sys.version_info[:2] < (2,2):
  22.     raise SystemError("need at least Version 2.2 of Python")
  23.  
  24.  
  25.  
  26.  
  27. rnd_mem_size    = 10000
  28. rnd_mem_count   = 100
  29.  
  30. rnd_disk_size   = 1000
  31. rnd_disk_count  = 1000
  32.  
  33. norm_disk_MBsize= 30
  34. norm_disk_count = 1000
  35.  
  36. fak_num     = 100000
  37.  
  38.  
  39.  
  40.  
  41.  
  42. class benchmark:
  43.     def __init__( self ):
  44.         self.rnd_mem_test()
  45.  
  46.         self.rnd_disk_test()
  47.  
  48.         self.fak_test()
  49.  
  50.         print "="*80
  51.         print "complete test duration:"
  52.         print "%.2fsec" % (time.time() - start_time)
  53.         print "="*80
  54.  
  55.  
  56.  
  57.     def print_process( self, i, total ):
  58.         "allg. Fortschrittanzeige"
  59.         i += 1
  60.         tresh = total / 10
  61.         if tresh == 0:
  62.             tresh = 1
  63.         if i % tresh == 0:
  64.             duration = time.time() - start_time
  65.             print "%3.i%% %4.i/%i  %.2fsec" % ( round(float(i)/total*100), i, total, duration)
  66.  
  67.  
  68.  
  69.     def rnd_mem_test( self ):
  70.         print "Random-MEM Test"
  71.         print "-"*80
  72.         print "Creating %i random-Blocks with a Size of %iBytes" % ( rnd_mem_count, rnd_mem_size )
  73.  
  74.         for i in range( rnd_mem_count ):
  75.             trash = [ chr( random.randint(0,255) ) for r in range(rnd_mem_size) ]
  76.             self.print_process(i, rnd_mem_count)
  77.  
  78.  
  79.  
  80.     def rnd_disk_test( self ):
  81.         print
  82.         print "Random-DISK Test"
  83.  
  84.         try:
  85.             testfile = file( "benchtest.tmp", "w" )
  86.         except Exception, e:
  87.             print "Can't create Testfile:",e
  88.             sys.exit(1)
  89.  
  90.         print "-"*80
  91.         KBsize = rnd_disk_count * rnd_disk_size / 1024
  92.         print "Write %i random-Blocks à %iBytes (total %iKB)" % ( rnd_disk_count, rnd_disk_size, KBsize )
  93.  
  94.         for i in range( rnd_disk_count ):
  95.             testfile.write(
  96.                     "".join( [ chr( random.randint(0,255) ) for r in range(rnd_disk_size) ] )
  97.                 )
  98.             self.print_process(i, rnd_disk_count)
  99.  
  100.         testfile.close()
  101.         testfile = file( "benchtest.tmp", "w" )
  102.  
  103.         print "-"*80
  104.         print "Test Disk writing speed"
  105.         blockMBsize = norm_disk_MBsize * 1024
  106.         MBytes = blockMBsize * norm_disk_count / 1024 / 1024
  107.         print "Writes %iMBytes (NULL-Bytes)" % ( MBytes )
  108.         NULLblock = " " * blockMBsize
  109.  
  110.         disk_start_time = time.time()
  111.         for i in xrange( norm_disk_count ):
  112.             testfile.write( NULLblock )
  113.             self.print_process( i, norm_disk_count )
  114.         disk_end_time = time.time()
  115.  
  116.         testfile.close()
  117.  
  118.         print "-"*80
  119.         print "%iMB/sec" % ( MBytes / ( disk_end_time-disk_start_time ) )
  120.  
  121.         try:
  122.             # lösche Inhalt des Tempfile
  123.             testfile = file( "benchtest.tmp", "w" )
  124.             testfile.close()
  125.         except:
  126.             pass
  127.  
  128.         try:
  129.             # Lösche Datei selber
  130.             os.remove( "benchtest.tmp" )
  131.         except Exception, e:
  132.             print "Can't delete Testfile:",e
  133.             sys.exit(1)
  134.  
  135.  
  136.  
  137.     def fak_test( self ):
  138.         print
  139.         print "fak Test"
  140.         print "-"*80
  141.  
  142.         def fak_recursive(n):
  143.             if n > 2:
  144.                 return n * fak_recursive(n-1)
  145.             else:
  146.                 return n
  147.  
  148.         def fak_iter_while(n):
  149.             res = n
  150.             while n > 2:
  151.                 n -= 1   # entspricht n = n - 1
  152.                 res *= n # ginge auch als res = res * n
  153.             return res
  154.  
  155.         def fak_iter_for(n):
  156.             res = n
  157.             for n in xrange(2,n):
  158.                 res *= n
  159.             return res
  160.  
  161.         fak_lambda = lambda n: reduce(operator.mul, xrange(2,n),n)
  162.  
  163.         def test(funktion_name, f):
  164.             print "%16s: %d Berechnungen..." % (funktion_name, fak_num),
  165.             values = range(1,101)*(fak_num/100)
  166.             t_start = time.time()
  167.             for val in values:
  168.                 tmp = f(val)
  169.             print "%.2fsec" % (time.time() - start_time)
  170.  
  171.  
  172.         test("fak_recursive", fak_recursive)
  173.  
  174.         test("fak_iter_while", fak_iter_while)
  175.  
  176.         test("fak_iter_for", fak_iter_for)
  177.  
  178.         test("fak_lambda", fak_lambda)
  179.  
  180.  
  181. if __name__ == "__main__":
  182.     benchmark()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement