Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def f1(list):
- string = ""
- for item in list:
- string = string + chr(item)
- return string
- def f2(list):
- return reduce(lambda string, item: string + chr(item), list, "")
- def f3(list):
- string = ""
- for character in map(chr, list):
- string = string + character
- return string
- def f4(list):
- string = ""
- lchr = chr
- for item in list:
- string = string + lchr(item)
- return string
- def f5(list):
- string = ""
- for i in range(0, 256, 16): # 0, 16, 32, 48, 64, ...
- s = ""
- for character in map(chr, list[i:i+16]):
- s = s + character
- string = string + s
- return string
- import string
- def f6(list):
- return string.joinfields(map(chr, list), "")
- import array
- def f7(list):
- return array.array('B', list).tostring()
- from struct import pack
- def f8(list):
- return pack('%dB' % len(list), *list)
- def cmpthese(n=0, functions=None):
- results = {}
- for func_name in functions:
- args = ['%s(range(256))' % func_name, 'from __main__ import %s' % func_name]
- t = Timer(*args)
- results[func_name] = 1 / (t.timeit(number=n) / n) # passes/sec
- functions_sorted = sorted(functions, key=results.__getitem__)
- for f in functions_sorted:
- diff = []
- for func in functions_sorted:
- if func == f:
- diff.append(" --")
- else:
- diff.append("%5.0f%%" % (results[f]/results[func]*100 - 100))
- diffs = " ".join(diff)
- print "%s\t%6d/s %s" % (f, results[f], diffs)
- if __name__=='__main__':
- from timeit import Timer
- cmpthese(1000, 'f1 f2 f3 f4 f5 f6 f7 f8'.split(" "))
Add Comment
Please, Sign In to add comment