Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Ravi Shankar — The Sounds of India (Columbia Records, 1968)
#hindustani#raga#sitar#India
Культовый альбом Рави Шанкара, который представляет классическую музыку Северной Индии западному слушателю. В начале альбома Рави Шанкар дает определение раге на английском языке, а затем исполняет ряд композиций, сопровождая их пояснениями о том, как они устроены. Вопреки этому, музыка исполнена очень аутентично. Альбом был вдохновлен работами Али Акбара Кхана, известного исполнителя на сароде и преподавателя классической музыки Северной Индии, и спродюсирован Джорджем Авакяном, одним из продюссеров Майлза Дейвиса.
Spotify | AppleMusic
Baligh Hamdi — Instrumental Modal Pop of 1970's Egypt (Sublime Frequencies, 2021)
#psychedelic#jazz#funk#raga#Egypt
Модальные инструментальные треки Балига Хамди, одного из самых важных арабских композиторов XX века. Он писал музыку для Умм Кульсум, Абделя Халима Хафеза, Сабах, Варды Аль-Джазаирии и многих других арабских певцов. Эта компиляция посвящена одному десятилетию творчества Хамди, в течении которого он заниался в основном западной поп-музыкой с элементами арабской традиции. Помимо этого на сборнике можно услышать гитарные соло знаменитого египетского гитариста Омара Хоршида и подборку индо-арабских композиций на ситаре, представляющих собой встречу ближневосточной и индийской музыки.
Bandcamp | VK
Banaras Baba & Kolkata Kid — From North to South (Epidemic Sound, 2021)
#hindustani#raga#sitar#India#Sweden
После многих лет изучения музыки Индостана, два шведских музыканта, мульти-инструменталист К.Г. Уэстман, он же Banaras Baba, и перкуссионист Хьюго Виден, он же Kolkata Kid, выпустили серию мини-альбомов, посвященных индийской классической музыке. Перед нами второй альбом из этой серии. Несмотря на то, что у музыкантов не было задачи смешивать разные музыкальные традиции, в их работах присутствуют западные инструменты и очень слышно влияние западной музыки.
Spotify | AppleMusic
Charanjit Singh — Synthesizing: Ten Ragas to a Disco Beat (Saregama, 1982)
#raga#acid#house#disco#electronic#India
Чаранджит Сингх — индийский музыкант из Мумбаи, много лет проработавший в Болливуде. В 21 веке он получил известность благодаря релизу 82 года, задуманному как сплав диско с индийскими рагами. На этом альбоме Сингх использовал легендарные синтезаторы TR-808 и TB-303 с функцией «глиссандо», напоминавшей ему индийскую мелодику. Сингх купил TB-303 в Сингапуре вскоре после его появления в конце 81 года. Он потратил много времени на изучение мало кому известного в то время устройства и в конце концов обнаружил возможность синхронизации TR-808 и TB-303 с Jupiter-8. В композицию «Raga Bhairavi» Сингх добавил синтезированный голос, произносящий «Om Namah Shivaya». В результате некоторые современные музыкальные журналисты назвали его самым ранним представителем эйсид-хауса, на пять лет опередившим «каноническую» запись «Acid Tracks» чикагского музыканта Phuture.
SoundCloud
Charanjit Singh — Synthesizing: Ten Ragas to a Disco Beat (Saregama, 1982)
#hindustani#raga#acid#house#disco#electronic#India
Чаранджит Сингх — индийский музыкант из Мумбаи, много лет проработавший в Болливуде. В XXI веке он получил известность благодаря релизу 1982 года, задуманному как сплав диско с индийскими рагами. На этом альбоме Сингх использовал легендарные синтезаторы TR-808 и TB-303 с функцией «глиссандо», напоминавшей ему индийскую мелодику.
Сингх купил TB-303 в Сингапуре вскоре после его появления на рынке в конце 1981 года. Он потратил много времени на изучение мало кому известного в то время устройства и в конце концов обнаружил возможность синхронизации TR-808 и TB-303 с Jupiter-8. В композицию Raga Bhairavi Сингх добавил синтезированный голос, произносящий Om Namah Shivaya. В результате некоторые современные музыкальные журналисты назвали его самым ранним представителем эйсид-хауса, на пять лет опередившим «каноническую» запись Acid Tracks чикагского музыканта Phuture.
🔗Spotify | AppleMusic | SoundCloud | VK | Telegram
Tenderlonious & Jaubi — Tender In Lahore (22a, 2020)
#hindustani#electronic#raga#tabla#flute#synth#Pakistan
В апреле 2019 года Tenderlonious, флейтист, джазовый саксофонист, электронный продюссер и глава лейбла 22a, отправился в Пакистан, чтобы поработать с инструментальным квартетом Jaubi из Лахора, столицы провинции Пенджаб, расположенной всего в нескольких киллометрах от Индии. Эти три импровизированные раги – первые плоды сотрудничества музыкантов.
Spotify | AppleMusic | Bandcamp
Don Cherry — Om Shanti Om (Black Sweat Records, 2020)
#jazz#raga#latin#berimbau#tambura#kora#United_States
Om Shanti Om был записан итальянской компанией RAI в 1976 году, но впервые издан только в этом году лейблом Black Sweat Records. В импровизированных композициях с этого альбома объеденины все знания пионера world-fusion, Дона Черри, полученные им во время многочисленных путешествий по миру. Помимо самого Черри, играющего на флейте, трубе и коре, на записи отметились бразильская перкуссионистка Нана Васконселос, итальянский гитарист Джан Пьеро Прамаджоре и жена Дона, Моника, исполняющая дрон на танпуре. Индийские мантры соседствуют с африканским пением и латниской ритмикой. Запись вышла очень эклектичной, но это тот случай, когда ей это только на руку.
🔗Bandcamp
Tenderlonious — Ragas From Lahore: Improvisations with Jaubi (22a, 2020)
#hindustani#electronic#raga#tabla#sarangi#flute#synth#Pakistan
В апреле 2020 года Tenderlonious, флейтист, джазовый саксофонист, электронный продюссер и глава лейбла 22a, отправился в Пакистан, чтобы поработать с инструментальным квартетом Jaubi из Лахора. Вслед за получившим признание «Tender in Lahore», вышедшим в апреле 2020 года, в результате этой поездки в ноябре 22a выпустил альбом импровизированных раг, записанных в течение одного дня. На этом альбоме структура индийской классической музыки обрамляет импровизационные сессии, в которых приняли участие Tenderlonious на флейте и сопрано-саксофоне, Кашиф Али Дхани на табла, Зохайб Хасан Кхан на саранги, Али Риаз Бакар на гитаре и Марек Пендзивиатр на синтезаторе.
Spotify | AppleMusic | Bandcamp
📺Glass Beams — One Raga to a Disco Beat (A cover of 'Raga Bhairav' by Charanjit Singh)
#psychedelic#funk#hindustani#raga#acid#house#disco#electronic#India#Australia
Австралийцы Glass Beams, выпустившие весной 2024 года нашумевший EP Mahal, записали кавер на композицию Raga Bhairav Чаранжита Сингха с альбома 1982 года Ten Ragas to a Disco Beat.
Оригинальная песня была создана в Мумбаи в 1982 году и является одной из первых записей, в которой звучит басовый синтезатор Roland TB 303, ставший основой для стиля acid house. Чаранжит Сингх в качестве эксперимента хотел записать индийские раги со звуками современных синтезаторлв, но в XXI веке музыкальные критики поняли, что работа композитора опередила время и звучит почти как acid house из Чикаго.
🔗YouTube
Jaubi — Nafs at Peace (Astigmatic Records, 2021)
#hindustani#raga#spiritual#modal_jazz#jazz#hip_hop#boom_bap#United_Kingdom#Poland#Pakistan
В 2016 году лахорский квартет Jaubi отметил десятую годовщину смерти J Dilla кавером его песни Time: The Donut of the Heart. Музыканты рассмотрели ритм песни как талам — перкуссионный каркас раги, вокруг которого выстраивается импровизация. Этот кавер — прекрасное введение в музыкальную философию группы, сочитающую в себе импровизацию классичской музыки Северной Индии и джаз с сэмплированием. Свой подход музыканты раскрывают в дебютном альбоме Nafs at Peace. «Нафс» — арабское слово, означающее «я», «эго» или «душа». Альбом был записан при участии Tenderlonious, лондонского джазиста и главы лейбла 22a, и Latarnik, польского пианиста и участник групп EABS и Błoto. Ранее, в 2020 году, музыканты в том же составе записали альбом импровизированных раг Ragas from Lahore.
🔗Spotify | AppleMusic | Bandcamp