Let's Make a Giant String!
We'll cover the following...
How long does it take to build a giant string? Let’s find out.
Press + to interact
def add_string_with_plus(iters):s = ""for i in range(iters):s += "xyz"assert len(s) == 3*itersdef add_bytes_with_plus(iters):s = b""for i in range(iters):s += b"xyz"assert len(s) == 3*itersdef add_string_with_format(iters):fs = "{}"*iterss = fs.format(*(["xyz"]*iters))assert len(s) == 3*itersdef add_string_with_join(iters):l = []for i in range(iters):l.append("xyz")s = "".join(l)assert len(s) == 3*itersdef convert_list_to_string(l, iters):s = "".join(l)assert len(s) == 3*iters
Let’s use 1000 iterations to build a string.
The time is given in seconds.
Press + to interact
import timeitNUM_ITERS = 1000print(timeit.timeit('add_string_with_plus(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_bytes_with_plus(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_string_with_format(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_string_with_join(NUM_ITERS)', number=1000, globals=globals()))l = ["xyz"]*NUM_ITERSprint(timeit.timeit('convert_list_to_string(l, NUM_ITERS)', number=1000, globals=globals()))
Let’s increase the number of iterations by a factor of 10.
Press + to interact
import timeitNUM_ITERS = 10000print(timeit.timeit('add_string_with_plus(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_bytes_with_plus(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_string_with_format(NUM_ITERS)', number=1000, globals=globals()))print(timeit.timeit('add_string_with_join(NUM_ITERS)', number=1000, globals=globals()))l = ["xyz"]*NUM_ITERSprint(timeit.timeit('convert_list_to_string(l, NUM_ITERS)', number=1000, globals=globals()))