Skip to content

Instantly share code, notes, and snippets.

@ifduyue
Created December 19, 2011 02:50
Show Gist options
  • Save ifduyue/1495189 to your computer and use it in GitHub Desktop.
Save ifduyue/1495189 to your computer and use it in GitHub Desktop.
list2str
import timeit
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()
def f8(list):
lchr = chr
return "".join(lchr(i) for i in list)
def f9(list):
lchr = chr
return "".join(map(lchr, list))
if __name__ == '__main__':
import sys
try: times = int(sys.argv[1])
except: times = 1000
testdata = range(256)
testfuncs = f1, f2, f3, f4, f5, f6, f7, f8, f9
for f in testfuncs:
t = timeit.Timer("%s(%s)"%(f.func_name,testdata), "from __main__ import %s"%f.func_name)
print f.func_name, t.timeit(times)
$ python list2str_benchmark.py
f1 0.0816869735718
f2 0.13659119606
f3 0.0807240009308
f4 0.0682158470154
f5 0.103960990906
f6 0.06405210495
f7 0.0222752094269
f8 0.0676648616791
f9 0.065975189209
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment