Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
from timeit import timeit
def t1():
# складываем 10 строк через + из переменной
t = 'text'
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t2():
# склеиваем список строк через метод join
arr = ['text'] * 10
for _ in range(1000):
s = ''.join(arr)
def t3():
# складываем через + но не из переменной а непосредственно инлайн объекты
for _ in range(1000):
s = 'text' + 'text' + 'text' + ... # всего 10 раз
Теперь каждую строку склейки запустим по 10М раз
>>> timeit(t1, number=10000)
0.21951690399964718
>>> timeit(t2, number=10000)
1.4978306379998685
>>> timeit(t3, number=10000)
0.2213820789993406
Хм, а нам говорили что через "+" это плохо и медленно ))) 😁
Тут стоит учитывать, что речь идёт о склейке множества длинных строк.
Давайте изменим условия:
def t4():
t = 'text'*100
for _ in range(1000):
s = t + t + t + t + t + t + t + t + t
def t5():
arr = ['text'*100] * 10
for _ in range(1000):
s = ''.join(arr)
def t6():
for _ in range(1000):
s = 'text'*100 + 'text'*100 + ... # всего 10 раз
>>> timeit(t4, number=10000)
12.795130728000004
>>> timeit(t5, number=10000)
2.642637542999182
>>> timeit(t6, number=10000)
0.2184546610005782
Вот, уже другой разговор, сразу видна разница, в среднем в 6 раз. Но погодите, почему последний тест t6() по скорости такой же как и t3()? Ведь строки теперь в 100 раз длиннее!
Это вопросы оптимизации кода, какие простые изменения ускоряют или замедляют выполнение программы. Мы столкнулись с примером обхода обращения к переменной. Например, именно так работает директива #define в С++, во время компиляции подставляя значение переменной вместо ссылки на неё.
В Python это тоже работает, но часто ли вы сможете встретить такой способ работы со строками? К сожалению, способ почти только теоретический.
В целом, тесты показали то, что мы хотели. Делаем выводы самостоятельно.
Полный листинг 🌍
#tricks
«A fin de poder garantizar la seguridad
y mantener la estabilidad,
de forma inmediata,
la República
se convierte en el primer Imperio (Galáctico),
para preservar el orden
y la seguridad de la sociedad.»
Darth Sidious, #StarWars:
La venganza de los Sith
WookieeNews - «A fin de poder garantizar la seguridad y... | Facebook
https://www.facebook.com/WookieeNews/posts/a-fin-de-poder-garantizar-la-seguridad-y-mantener-la-estabilidad-de-forma-inmedi/5204325709676648/
🤩LEGO Adult 18+ #starwars
Всем кидалтам привет!
Потому что только у взрослого фаната теоретически найдется $999 на эту игрушку LEGO
⭐️Набор LEGO Star Wars «Звезда Смерти» – серия Ultimate Collector
(#75419) состоит из 9 023 деталей по стоит $999.99, что делает его самым дорогим набором LEGO на сегодняшний день.
В готовом виде боевая космическая станция представлена в поперечном сечении.
⭐️Можно собрать все культовые локации из оригинальной трилогии: мусорный отсек, сет из битвы Дарта Вейдера с Оби-Ваном, тронный зал Императора.
В набор входят 38 минифигурок — Люк, Лея, Хан, Дарт Вейдер, Император, дроиды, штурмовики и другие персонажи.
Бонусом при покупке дарят истребитель TIE с имперским ангаром.
С 1 октября набор смогут купить участники клуба LEGO Insiders, а с 4 октября - все.
Кстати, у коллекционного набора маркировка 18+.
An in-depth look at the #StarWars fan base:
- 37% are female
- 91% use a device to play games
- 44% use #SocialMedia to research products online
🚀@PerspectiveIX
Are you a Star Wars fan?
👍 Yes
👎 No
STAR WARS: KOTOR II
🆕Орден джедаевуничтожен, и единственная надежда Республики — вы, одинокий джедай, потерявший связь с Силой. Именно вам придется принять судьбоносное для галактики решение: идти по пути света или погрузиться во тьму.
⚙️Полная купленная версия (1390₽). Кэш встроен в установщик.
#STARWARS@pm_plus#Приключения
#Приключения@pm_plus
📱Play Market +
⚡️ НАШ ЧАТ
STAR WARS: KOTOR II
🆕Орден джедаевуничтожен, и единственная надежда Республики — вы, одинокий джедай, потерявший связь с Силой. Именно вам придется принять судьбоносное для галактики решение: идти по пути света или погрузиться во тьму.
⚙️Полная купленная версия (1390₽). Кэш встроен в установщик.
#STARWARS@pm_plus#Приключения
#Приключения@pm_plus
📱Play Market +
⚡️ НАШ ЧАТ