deets hat geschrieben:Tatsaechlich scheint Python da auch schon was zu optimieren. Zumindest habe ich mal ein kleines bisschen timing-tests gemacht, und da war string.join nicht wirklich schneller.
Es ist zumindest nicht dramatisch, wenn du beispielsweise einhundert Stringverkettungen mit je 10 Zeichen durchführst. Mit nicht dramatisch meine ich hier etwa Faktor 3.
Führst du die Stringverkettung aber zehntausendmal mit einem String aus, dann landest du bei Faktor 150 oder höher. Machst du dann den hinzuzufügenden String 40 Zeichen lang, statt 10 Zeichen, dann ändert sich die Zeit für die Liste nicht sinnvoll messbar, die Stringverkettung braucht dann aber etwa die vierfache Zeit, also Faktor 600.
Code: Alles auswählen
def str_cat(repeat, runs=1):
data = '1234567890123456789012345678901234567890'
#data = '1234567890'
for run in xrange(runs):
result = ''
for i in xrange(repeat):
result += data
return result
def str_list(repeat, runs=1):
data = '1234567890123456789012345678901234567890'
#data = '1234567890'
for run in xrange(runs):
pool = []
for i in xrange(repeat):
pool.append(data)
return ''.join(pool)
def run(func, repeat, runs=1):
start = time.time()
x = func(repeat, runs)
runtime = time.time() - start
print(len(x))
return runtime
print run(str_list, 10000)
print run(str_cat, 10000)
print run(str_list, 100, 100)
print run(str_cat, 100, 100)