Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Armenian Song and Dance Ensemble — Armenian Festival (Monitor Records, 1961)
#traditional#tar#duduk#Armenia
Альбом Armenian Festival знакомит слушателей с образцами армянской народной музыки и традиционными инструментами. В сопровождении дудука, деревянной флейты с двойной тростью, и тара, струнного инструмента с деревянным корпусом, обтянутым кожей, звучат песни о сельском труде, природе и жизни горцев.
Особое место в альбоме занимает жанр хоровел (հորովել), исполняемый во время пахоты. Обратите внимание на песню «Gutani Yerg (Գութանի Երգ)» — одно из ярких воплощений этой традиции.
В записи участвовали артисты Государственного хора Армении, Армянского оркестра народных инструментов, вокалист Вагаршак Мамиконян и тарист Соломон Сейранян. Все они объединились в «Армянский ансамбль песни и танца» ради этого альбома.
Руководил процессом Татул Тигранович Алтунян — дирижёр, музыковед-фольклорист и профессор Ереванской консерватории. Благодаря его академической закалке аранжировки получились значительно плотнее и сложнее традиционных. Но это не выглядит как попытка учёного «подправить» народную музыку, чем часто грешат советские записи. Эта пластинка местами скорее напоминает арабскую эстраду, Умм Кульсум или Файруз, но с корнями, уходящими в армянскую, а не арабскую землю.
🔗Spotify | Telegram
Benik Abovian & Zaven Azibekian — Traditional Musicians From Tavush (Maison Des Cultures Du Monde, 2002)
#traditional#field_recording#dhol#duduk#zurna#sring#dam#Armenia
Опираясь на географическое положение Армении и многонациональную историю Кавказа, армянскую народную музыку можно считать частью ближневосточного музыкального наследия. Однако, на протяжении веков армянская музыка находила свое вдохновение в сельских и пастушеских мелодиях, средневековых христианских религиозных монодиях, а также в городских традициях гусанов — бардов сасанидского, парфийского и, конечно, армянского происхождения. Этот путь дал начало глубокой и разнообразной музыкальной культуре, которая сохраняет свой уникальный характер.
Современные армянские народные музыканты гордятся этим разнообразным наследием, которое значительно обогатилось в XIX и XX веках. Период потрясений того времени, в частности, геноцид 1915 года, а также политика урбанизации в советской Армении, способствовали тому, что народная музыка, как сельская, так и городская, была сохранена и увековечена деревенскими музыкантами.
Тавушская область, расположенная на северо-востоке Армении, недалеко от границ с Грузией и Азербайджаном, не является исключением. Как и во многих других регионах Армении, народная музыка здесь до сих пор исполняется в деревнях во время свадеб, фестивалей и похорон.
Последователи древних традиций, гусаны Беник Абовян и Завен Азибекян признаны одними из лучших исполнителей тавушской народной музыки. В 2001 году в деревне Кирантц и городке Ноемберян Николас Бергер записал игру музыкантов для французского Института мировых культур. В течение всего альбома звучат импровизации музыкантов на разнообразных духовых инструментах, таких как зурна, дудук и сринг, сопровождаемые ритмами доула.
🔗Spotify | AppleMusic | Telegram
Hesam Inanlou — A Lament for Existence (Hermes Records, 2021)
#persian_classical#jazz#kemenche#tombak#duduk#nyckelharpa#bandoneon#erhu#Iran
A Lament for Existence — альбом камерной традиционной музыки с задумчивым и печальным настроением. На нем мы можем услышать ряд дуэтов, записанных иранским исполнителем на киманче, Хесам Инанлоу, с западными и восточными музыкантами. Здесь звучат как фортепиано и кларнет, так и куда более необычные инструменты, такие как бандонеон и эрху. Музыка была написана в дистанционном формате во время пандемии короновируса в 2020 году и опубликована 2021 году.
Spotify | AppleMusic | VK