Answer
t.me/python_tesstОтвет:
Время на +: 0.5704808235168457
Время на join: 0.29478001594543457
Время на format: 0.6076076030731201
Время на %: 0.4983177185058594
Время на f-string: 0.2757294178009033
Объяснение:
Попробуем рассмотреть такой момент, как конкатенирование строк в Python. Здесь имеем ряд своих нюансов, которые ведут себя немного не так, как это может показаться, глядя на строчки незамысловатого кода. Как мы помним из синтаксиса существует несколько способов объединять строки. Но разные методы работы со строкам расходуют разный объем памяти и времени. Было введено понятие, как f-string с целью ускорить работу со строками.
Проведя dis.dis() для данного метода, можно заметить, что разные методы конкатенации вызывают разные состояния, которые в свою очередь различаются по реализации.
Код:
def test_str2():
import time
s1 = "Привет"
s2 = "Всем"
s3 = ","
s4 = "Кто"
s5 = "Это"
s6 = "Читает"
t = time.time()
for _ in range(1000000):
s = s1 + " " + s2 + " " + s3 + " " + s4 + " " + s5 + " " + s6
r = time.time() - t
print("Время на +: ", r)
t = time.time()
for _ in range(1000000):
s = " ".join([s1, s2, s3, s4, s5, s6])
r = time.time() - t
print("Время на join: ", r)
t = time.time()
for _ in range(1000000):
s = "{} {} {} {} {} {}".format(s1, s2, s3, s4, s5, s6)
r = time.time() - t
print("Время на format: ", r)
t = time.time()
for _ in range(1000000):
s = "%s %s %s %s %s %s" % (s1, s2, s3, s4, s5, s6)
r = time.time() - t
print("Время на %: ", r)
t = time.time()
for _ in range(1000000):
s = f"{s1} {s2} {s3} {s4} {s5} {s6}"
r = time.time() - t
print("Время на f-string: ", r)
test_str2()