Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
https://youtu.be/GLKhLHdh86E
Неожиданно обнаружил, что мое второе видеопутешествие по Байкало-Амурской магистрали было заблокировано на территории России. Оказывается правообладатель музыки запретил ее для прослушивания; никакого дохода со своих видео я не получаю, музыку использую из-за ее настроения и ощущения «красиво, это то, что надо!».
Населению России, запертому наедине с президентом-безумцем теперь даже непозволительно слушать определенную музыку.
Я переозвучил вторую часть и добавил фоном музыку из своего подкаста. В комментариях под видео собирались очень душевные истории, в которых люди рассказывают про свою жизнь, молодость, некая Людмила Северова написала красивый комментарий: «Жила, работала, служила в Февральске».
Теперь видео снова доступно для зрителей из России, я не мог оставить этих людей без воспоминаний.
#bam
Уникальный контент только для подписчиков моего телеграм-канала!
Я собрал свои аудио записи, которые записывал на телефон в дороге по БАМу.
Плейлист таков:
1. В купе с японцами.
2. Носитель сумок из Хабаровска
3. Соседка по купе пытается говорить с иностранными соседями.
4. Музей музыкальных аппаратов в Хабаровске.
5. Мужики на БАМе обсуждают бурение и беседы за жизнь.
6. Проводница отчитывает мужа.
#bam
Ехал я через всю Россию не в одиночестве. Рядом со мной была Алена, и у нее в инстаграме получилась очень интересная и живая версия этого путешествия.
Можно даже сказать бэкстейдж всей нашей поездки.
Поезда
Байкал
Дальний Восток
Хабаровск
Комсомольск-на-Амуре
Биробиджан
#bam
Про БАМ и свой путь через всю Россию я могу писать еще долго, да и фотографий у меня в запасе десятки, сотни, тысячи! Но думаю пора остановиться и полностью посвятить себя новым творческим работам. Поэтому пока завершу историю про БАМ здесь вот этой фотографией избы на просторах Пермского края.
Почти вернулся в свою обычную форму, поэтому начинаю активнее браться за дело. Задачу я поставил перед собой сложную, но от этого ещё интереснее, видео будет длинное. Надеюсь, закончу к концу месяца, а потом и возьмусь за новый выпуск подкаста. Так что делаю я это все неспешно и нерегулярно, к тому же в свободное от основной работы время. Но не очень переживаю по этому поводу, ведь главная причина продолжать: я просто не могу это не делать. #bam
Горный хребет Кодар можно увидеть, когда поезд спускается с перевала. Его вид вызвал во мне очень непонятные чувства: из-за того, что он резко вздымается вверх, кажется — это стена, ограждающая нас неизвестно от чего или кого. Еще и туман, нависший над его пиками, добавил мистической атмосферы. Где-то в его дебрях заключенные ГУЛАГа добывали уран, хотя кто знает, что еще творилось или творится за этой горной стеной. #bam
Перевал Мурурин - самый высокогорный участок РЖД, 1323 метра над уровнем моря. Ощущения, когда поезд несется по нему, странные, то закладывает уши, то бросает в пот, не знаю с чем это связано: с перепадом высот или с эмоциональным перевозбуждением. В мае на склонах гор зима, и если в вагоне открыты окна, то начинает завывать лютый холод, думаю есть шанс при низкой облачности проехать на поезде сквозь облако. Эта горная гряда для нас стала границей не только двух регионов Сибири и Дальнего Востока, но и границей двух сезонов. Ехали мы из солнечной весны, а спустившись с гор, оказались в пасмурном дождливом пейзаже с затянутым серым небом.
P.S на стеле между двумя регионами есть один несуществующий: Читинская область исчезла в 2008 году, теперь это Забайкальский край. #bam
Станция Хани. Отправившись в путешествие по БАМу вы можете буквально на пару часов заглянуть в Якутию и прогуляться по одному из населенных пунктов этой огромной республики. Если бы на Якутию свалилась независимость в 1991 году, она бы стала 8 государством в мире по своему размеру, обойдя Аргентину и почти идя ноздря в ноздрю с Индией. Прогуляться полчаса по поселку Хани и купить сомнительные чипсы по завышенной цене - бесценно, чувствуешь, что гуляешь по владениям гигантского северного, даже арктического края. #bam
Больше ничего подобного не случалось. Очередной сосед был из их компании, но совершенно не пил, был задумчив и немногословен, даже рассказал, что впереди нас ждут настоящие впечатляющие виды, а тут на восточном БАМе тоска и тьма. Достал телефон и показал фотографии гор, добавив, что снимал из едущего поезда, открыв дверь на полном ходу. Мы попрощались в Тынде, он сказал что если бы мы остались в городе на день, показал бы его и позвал в гости.
На Западном БАМе и Транссибе нашими соседями были уже обычные люди, возвращающиеся домой от родных или наоборот едущие на такой вожделенный русский юг. Отец с детьми, его сын мог без остановки кричать: «Едем дальше!» (я чуть не сошел с ума)
Семейная пара, едущая из Благовещенска, взрослые, но очень любознательные, все вокруг меряли ценами на продукты и одежду. Гордо говорили, что у них побывать в Китае такая же банальщина, как зайти к соседу в огород.
Были и иностранцы, японская пара, у нас случилась огромная симпатия, было жалко покидать их, а они очень грустили, когда настал наш черед выходить. Они были нашими первыми попутчиками, из-за чего мы решили, что впереди нас будут ждать куча новых людей. Но таких запоминающихся как Кохей и Нотока больше не встретили, к сожалению забыли взять у них контакты, помню только, что они были из Осаки.
БАМ место суровое и люди, живущие там гармонично его дополняют. Это атмосфера уставших рабочих мужчин, хоть мы и ехали в купе, иногда в одиночестве, но на станциях видели как из плацкартных вагонов бегут толпы мужчин в соседние ларьки, скупая десятки литров пива. Кстати за все время стал свидетелем как сняли с поезда только одного дебошира, да и в целом люди в тех краях очень спокойные и родные, но уставшие, чувствуется, что их потребности и желания намного ниже среднестатистического жителя России, а тем более жителей Москвы и крупных городов. Покой да уют, да чтоб продукты были хорошие и денег хватало, это чувствуется во всем, забытые люди и края, но готовые радостно встретить новых гостей с большой земли. Даже пресс-карта не потребовалась, которую я брал на всякий случай. Добро пожаловать, странник, здесь рады всем. #bam