Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Ministro dell’ambiente e della sicurezza energetica Gilberto #Pichetto: “L'aggiornamento del Pniec (Piano Energia e Clima), da trasmettere alla Commissione europea entro giugno 2024, riporterà anche analisi di scenario contenenti una possibile quota di energia prodotta da fonte nucleare nel periodo 2030-2050.” - ANSA
@UltimoraPolitics
Piemonte, scongiurato il blocco della circolazione per i veicoli Diesel Euro5: ok del Cdm al rinvio del contestato provvedimento a ottobre 2024. Il ministro dell'Ambiente, Gilberto #Pichetto Fratin: "L'obiettivo più importante era evitare il blocco dal 15 settembre. Ci siamo riusciti, ma la soluzione non era semplice e il risultato per nulla scontato"
@UltimoraPolitics
Crisi climatica, al Giffoni Film Festival una ragazza ammette di avere "l'eco-ansia" e dice di non voler fare figli in un mondo così a rischio. Poi si rivolge al ministro dell'Ambiente chiedendogli commuovendosi: "Ma lei non ha paura per i suoi figli?". A quel punto, #Pichetto Fratin, che è anche nonno, scoppia a piangere e asciugandosi le lacrime ribatte: "Io ho la forza del dubbio, ho un dovere verso la carica che ricopro verso di voi e verso i miei nipoti"
@UltimoraPolitics
Il Ministro #Pichetto annuncia che al CdM del 23 maggio "verrà deliberato lo stato di calamità" per le zone colpite dall'alluvione in Emilia-Romagna e "si risponderà ai primi interventi. E' già stato annunciato il blocco dei mutui e delle riscossioni tributarie." (via Ansa)
@UltimoraPolitics
Ministro dell’ambiente e della sicurezza energetica Gilberto #Pichetto: “L'aggiornamento del Pniec (Piano Energia e Clima), da trasmettere alla Commissione europea entro giugno 2024, riporterà anche analisi di scenario contenenti una possibile quota di energia prodotta da fonte nucleare nel periodo 2030-2050.” - ANSA
@UltimoraPolitics
Rigassificatore Piombino, Ministro #Pichetto: "Ci opporremo al ricorso del Comune. Attendiamo la sentenza del Tar. Abbiamo bisogno di quei 4-5 miliardi di metri cubi che verrebbero da Piombino"
@UltimoraPolitics24
Il ministro per l'Ambiente e la Sicurezza energetica, Gilberto #Pichetto, pone a nome del governo la questione di fiducia alla #Camera sul cosiddetto decreto Rigassificatori
@UltimoraPolitics
#UE
❗️ L'annuncio del Ministro dell'Ambiente, Gilberto #Pichetto: "Il Consiglio Energia ha approvato il tetto al prezzo del gas. E’ la vittoria dei cittadini italiani ed europei che chiedono sicurezza energetica. E’ la vittoria dell’Italia che ha creduto e lavorato per raggiungere questo accordo"
@UltimoraPolitics
Gilberto #Pichetto Fratin (#FI), Ministro dell’Ambiente e della sicurezza energetica: “l’Italia è pronta a dire addio al carbone, la fonte fossile che genera più emissioni di gas serra. Potremmo arrivare a chiudere tutte le centrali a carbone nei prossimi mesi, anche se per l’attuale scenario geopolitico è più probabile parlare dell’anno prossimo (2027 per la Sardegna)”. (La Stampa)
@UltimoraPolitics24