TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #32 · 7 фев.

Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять: 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

Резултати

Пронајдени 2 слични објави

Пребарај: #robertschumann

当前筛选 #robertschumann清除筛选
🎼 CLÁSICA AL ATARDECER 🎻

@ClasicaAlAtardecer · Post #6285 · 09.08.2023 г., 18:00

#Sinfonía4#RobertSchumann#JesúsAmigo Título:La Sinfonía n.º 4 en re menor, Op. 120. Autor:Robert Schumann Movimientos: 🎵 I. Ziemlich langsam - Lebhaft 🎵 II. Romanze. Ziemlich langsam 🎵 III. Scherzo. Lebhaft 🎵 IV. Langsam - Lebhaft - Presto Interpretación: Orquesta Sinfónica del Real Conservatorio Superior de Música de Madrid. Director: Jesús Amigo Fuente:🎼 @ClasicaAlAtardecer

🎼 CLÁSICA AL ATARDECER 🎻

@ClasicaAlAtardecer · Post #6284 · 09.08.2023 г., 18:00

​​#Sinfonía4#RobertSchumann#JesúsAmigo LA SINFONÍA N.º 4 EN RE MENOR, OP. 120. La Sinfonía n.º 4 en re menor, Op. 120, es una obra sinfónica escrita por Robert Schumann y estrenada en 1841. Fue revisada y reorquestada por el mismo compositor en 1851. Su estreno se produjo el 6 de diciembre de 1841 interpretada por la orquesta de la Gewandhaus de Leipzig, como “Sinfonía Nº2”. Más tarde en 1851 Schumann hizo una revisión y nueva orquestación de la obra publicándola como “Sinfonía Nº4”. La sinfonía presenta una forma muy homogénea, creada por los temas y sus variantes, que van pasando de uno a otro movimiento. Debido a ello Schumann creo secciones de enlace entre los diversos movimientos, indicando que debían interpretarse sin interrupción. A pesar de conservar en el fondo la forma clásica, el desarrollo de los movimientos es muy libre. Está pieza consta de 4 movimientos: 🎵 I. Ziemlich langsam - Lebhaft 🎵 II. Romanze. Ziemlich langsam 🎵 III. Scherzo. Lebhaft 🎵 IV. Langsam - Lebhaft - Presto El primer movimiento, ziemlich langsam, lebhaft, empieza con una introducción lenta presentando el tema mediante la cuerda, llegando después de un crescendo a unas frases ondulantes de los contrabajos que preparan el terreno para el primer tema del lebhaft o sea vivace. El tema principal, construido en dos partes, se eleva por medio de la orquesta. Durante el desarrollo aparece un tema lírico derivado del primero. Termina con una variante del tema lírico presentado de forma marcial y la repetición del tema principal en forma de coda. El segundo movimiento, romanze, ziemlich langsam, continúa sin interrupción. El oboe presenta una amplia y noble melodía. Aparece entonces el tema de la introducción del primer movimiento. La parte central la ocupa un tema basado en sinuosos descensos del primer violín. El tema del oboe termina este corto movimiento en forma alterada de lied. A, p, B, A. Unas ondulaciones de los violoncelos unen el anterior movimiento con el siguiente. El tercer movimiento, scherzo, lebhaft, trío, empieza con un tema decidido que abarca toda la orquesta. El trío es contrastado y dulce. Se trata de una variante del tema sinuoso escuchado en la parte central del romanze, pero interpretado de un modo más melódico, evitando marcar los acentos rítmicos. Se repite el scherzo y el trío, con el cual el movimiento se va apagando, hasta terminar como el anterior movimiento, con una suave ondulación de los violoncelos, que servirá de puente para enlazar sin pausa con el último movimiento. El cuarto movimiento, langsam, lebhaft, empieza con una introducción lenta, enlazando con el anterior. Esta parte termina con tres fuertes acordes que dan paso al vivace, con material que había pertenecido al primer movimiento. Un interesante episodio donde se alternan notas en forte y en piano, nos conduce a una atmósfera de felicidad. Tres rápidos acordes marcan el final de la exposición. La partitura indica la repetición en este punto de la exposición pero algunos directores continúan con la parte de desarrollo, saltándose estos 61 compases. Durante el desarrollo se emplean los temas anteriores, terminando con una corta reexposición y una coda conclusiva en crescendo. Una subida desde las cuerdas graves hasta las maderas y los metales termina la obra con un gran acorde. @ClasicaAlAtardecer