#!/usr/local/bin/python2 -- # # all_test.py # # A python 1.5.1 version of the ScriptPerf performance test. # # Python Homepage: http://www.python.org/ # # Scott Hassan # David Jeske # import os, sys, string, time, getopt, re # ------------------------------------ def index_test_for(INDEX): table = {} for i in xrange(INDEX): table[i] = i for i in xrange(INDEX): b = table[i] def index_test(INDEX): table = {} i = 0 while i < INDEX: table[i] = i i = i + 1 i = 0 while i < INDEX: b = table[i] i = i + 1 # ------------------------------------ def index_string_test(INDEX): table = {} for i in range(INDEX): table["some_string"] = i for i in range(INDEX): b = table["some_string"] # ------------------------------------ def loop_test(NESTED): for a in xrange(NESTED): for b in xrange(10): pass def loop_test_while(NESTED): a = 0 while a < NESTED: b = 0 while b < 10: b += 1 a += 1 # ------------------------------------ def nested_int_test(NESTED): n = 0 for a in range(NESTED): n = n + 34 for b in range(NESTED): n = n + 9 for c in range(NESTED): n = n + 5 for d in range(NESTED): n = n + 3 for e in range(NESTED): n = n - 100 # ------------------------------------ def file_line_test(NESTED): fp = open("testfile.dat") for a_line in fp.xreadlines(): pass # ------------------------------------ def file_line_split_test(NESTED): fp = open("testfile.dat") for a_line in fp.xreadlines(): line_parts = string.split(a_line," ") # ------------------------------------ def file_line_re_test(NESTED): fp = open("testfile.dat") pat = re.compile("([0-9]+) ([a-z]*)") for a_line in fp.xreadlines(): match = pat.match(a_line) # match = re.match("([0-9]+) ([a-z]*)", a_line) if match: a,b = match.groups() # ------------------------------------ def dothisB2(a,b): return a,b def return2test(count): for i in range(count): a,b = dothisB2(1,2) # ------------------------------------ def dothisB(a,b): return a def returntest(count): for i in range(count): a = dothisB(1,2) # ------------------------------------ def dothis(a): return a def functest(count): for i in range(count): dothis(10) # ------------------------------------ def list_append_test(count): a = [] for i in range(count): a.append(5) return a # ------------------------------------ big_list = None def list_traverse_test(count): a = 0 global big_list for i in big_list: a = 1 # ------------------------------------ class Foo: def dothis(self,a): return a def objecttest(count): obj = Foo() for i in range(count): obj.dothis(10) # ------------------------------------ # recursion test def fib_test(n): if n <= 2: return 1 else: return fib_test (n - 1) + fib_test (n - 2) # ------------------------------------ class InstanceTest: b_value = 2 def __init__(self): self.a_value = 1 def instance_data_access_test(self,n): for i in range(n): a = self.a_value def class_data_access_test(self,n): for i in range(n): a = self.b_value def missing_instance_data_access_test(self,n): for i in range(n): try: a = self.b_value except AttributeError: pass def instance_data_access_test(n): obj = InstanceTest() obj.instance_data_access_test(n) def class_data_access_test(n): obj = InstanceTest() obj.class_data_access_test(n) def missing_instance_data_access_test(n): obj = InstanceTest() obj.missing_instance_data_access_test(n) ################################################################ def timefunk(label, f, count): s = (time.time()) f(count) e = (time.time()) print "%20s(%s) elapsed: %s seconds" % (label, count, e-s) def usage(progname): print "usage: %s" % progname print __doc__ def main(argv, stdout, environ): progname = argv[0] list, args = getopt.getopt(argv[1:], "", ["help"]) for (field, val) in list: if field == "--help": usage(progname) return if 0: d = [] for i in range(5000000): d.append(i) print "starting" if 0: timefunk("instance_data_access_test",instance_data_access_test, 500000) timefunk("class_data_access_test",class_data_access_test, 500000) timefunk("missing_instance_data_access_test",missing_instance_data_access_test, 500000) timefunk("fib_test", fib_test, 30) if 0: timefunk("list_append_test",list_append_test, 50000) global big_list big_list = list_append_test(500000) timefunk("list_traverse_test",list_traverse_test, 500000) if 0: timefunk("file_line_test",file_line_test, 1) if 1: timefunk("file_line_split_test",file_line_split_test, 1) if 0: timefunk("file_line_re_test",file_line_re_test, 1) if 0: timefunk("loop_test",loop_test, 500000) timefunk("index_test",index_test, 1000000) timefunk("index_string_test",index_string_test, 1000000) timefunk("nested_int_test",nested_int_test, 23) timefunk("returntest",returntest,5000000) timefunk("functest",functest,5000000) timefunk("objecttest",objecttest,5000000) if __name__ == "__main__": main(sys.argv, sys.stdout, os.environ)