Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
🌍 The desert climate zone covers about one-fifth of Earth's land, yet some deserts get colder than snowy regions—Antarctica is classified as the world's largest desert by climate. ✨
#climatezones⚡#deserts⚡#earth⚡#geography⚡#nature
👉subscribe Amazing Geography
👉more Channels
🌍 The boundary between different climate zones doesn't always follow straight lines—on mountain slopes, tropical and temperate climates can exist just a few kilometers apart, packed side by side. ✨
#climatezones⚡#biomes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The humid subtropical climate zone stretches across southeastern continents but also appears in parts of East Asia and South America, helping create lush forests and long growing seasons for crops. ✨
#climatezones⚡#vegetation⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The Mediterranean climate zone, found in only a few parts of the world, has mild, rainy winters and hot, dry summers—a combination perfect for growing olives, grapes, and citrus. ✨
#climatezones⚡#Mediterranean⚡#agriculture⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Antarctica’s interior is the only place on Earth with a true polar climate—temperatures rarely rise above freezing, and less precipitation falls each year than in most deserts. ✨
#climatezones⚡#antarctica⚡#extremes⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 In the world’s subtropical climate zones, some deserts like the Sahara and Arabian receive less than 2 centimeters of rain a year—making them among the driest places on Earth. ✨
#climatezones⚡#deserts⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography🌍
🌍 The humid subtropical climate zone—found in places like southeastern China and the southeastern US—brings hot summers, mild winters, and is prone to sudden, powerful thunderstorms. ✨
#climatezones⚡#weather⚡#regions⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The world’s largest continental climate zone covers central Eurasia, where summers can reach above 40°C and winters drop below –40°C—a giant temperature swing found nowhere else on Earth. ✨
#climatezones⚡#temperature⚡#Eurasia⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Earth’s Mediterranean climate zones, found in places like California and parts of Australia, support massive wildflower blooms after winter rains despite having hot, dry summers. ✨
#climatezones⚡#biomes⚡#vegetation⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 The subarctic climate zone stretches across vast parts of Canada and Russia, where winters are so cold that forests are called “taiga”—the world’s largest continuous woodland region. ✨
#climatezones⚡#taiga⚡#forests⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels
🌍 Some climate zones, like the monsoon zone, see one season bringing almost all their annual rain in just a few weeks. This sudden wet season shapes ecosystems and water supplies for millions. ✨
#climatezones⚡#monsoon⚡#rainfall⚡#geography⚡#nature⚡#earth
👉subscribe Amazing Geography
👉more Channels