Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
La giunta regionale dell’#EmiliaRomagna con presidente #Bonaccini e vicepresidente #Schlein ha restituito fra il 2021 e il 2022 al ministero delle Infrastrutture 55,2 milioni di euro di un finanziamento di 71,9 milioni di euro ricevuto dallo Stato per la manutenzione…
La giunta regionale dell’#EmiliaRomagna con presidente #Bonaccini e vicepresidente #Schlein ha restituito fra il 2021 e il 2022 al ministero delle Infrastrutture 55,2 milioni di euro di un finanziamento di 71,9 milioni di euro ricevuto dallo Stato per la manutenzione e la messa in sicurezza dei corsi di acqua della Regione. (Open)
@UltimoraPolitics
#Italia#EmiliaRomagna#Parma
Fallite le trattative col centrosinistra e con Pizzarotti: a Parma il #M5S|NI non parteciperà alle amministrative.
@UltimoraPolitics
#Italia#EmiliaRomagna#Bologna
In una conferenza stampa a Bologna, #PaP|Sinistra radicale ha denunciato la aggressione e il tentato stupro di una militante di PaP da parte di un gruppo di persone ucraine neofasciste, con chiara simbologia banderista.
@UltimoraPolitics
#Italia#EmiliaRomagna#ReggioEmilia
Le delegazioni di #IV|RE e #PiùE|RE sono state aggredite a Reggio Emilia durante le celebrazioni del 25 aprile.
@UltimoraPolitics
#Italia#Regionali#EmiliaRomagna
Il 17 e il 18 novembre si voterà per l'elezione del Presidente della Regione Emilia-Romagna e il contestuale rinnovo dei 50 consiglieri regionali (contemporaneamente con l'Umbria) eletti all'interno dei 9 collegi regionali corrispondenti alle 9 province.
Si voterà dalle 7 alle 23 di domenica 17 e dalle 7 alle 15 di lunedì 18.
Il Presidente è eletto in un unico turno: basta la maggioranza relativa dei voti per poter essere eletti e gli sarà assicurata una maggioranza di almeno 27 seggi. Lo sbarramento è fissato al 3% per le liste coalizzate e al 5% per le liste non coalizzate.
La Regione è sempre stata la roccaforte prima della sinistra e oggi del centrosinistra e secondo i sondaggi dovrebbero vedere confermata l'amministrazione uscente.
La Presidente in carica è Irene #Priolo (#PD|S&D), facente le veci del Presidente eletto Stefano #Bonaccini (PD) a gennaio 2020 con il 51% dei voti che si è dimesso per entrare in carica come europarlamentare.
@OsservatorioItaliano
#Italia#Regionali#EmiliaRomagna
Il Sindaco di #Ravenna Michele #DePascale (#PD|S&D) è il nuovo Presidente della Regione Emilia-Romagna.
Succede all'europarlamentare e Presidente del Partito Democratico Stefano #Bonaccini.
@OsservatorioItaliano
Autonomia, via libera alla richiesta del referendum. #Campania, #Toscana, #Sardegna, #Puglia ed #EmiliaRomagna hanno approvato in consiglio regionale gli stessi provvedimenti: il quesito che intende abolire interamente la norma e l'altro per la modifica parziale. I delegati delle regioni presenteranno i quesiti alla Corte Costituzionale. (Ansa)
@UltimoraPolitics
Le regioni #EmiliaRomagna e #Puglia interrompono tutti i rapporti con #Israele. Il presidente della Puglia #Emiliano: "Genocidio di inermi palestinesi in atto da parte del governo #Netanyahu"
@UltimoraPolitics
Il PNRR non può essere utilizzato per aiutare l'Emilia Romagna.
Cerchiamo di quantificare il disastro.
Danni per almeno 5/6 miliardi di euro: circa 15 milioni di piante da estirpare (per realizzare un ettaro di frutteto ci possono volere 50 mila euro); mille aziende in crisi e quattrocento allevamenti alluvionati; cinquantamila posti di lavoro a rischio.
Ci vorranno cinque anni per raccogliere qualche frutto da un albero nelle zone colpite.
Saranno 400 milioni i kg in meno di grano nel mercato nazionale e mancherà il 20% della frutta. L'effetto: saliranno i prezzi di questi beni essenziali e a pagare saranno i più deboli.
Il PNRR però si potrà utilizzare per investire in armi, anche grazie al voto favorevole di quasi tutti i nostri partiti politici.
Giudicate voi.
La mia al TG Plus di Cusano Italia TV
#alluvioneemiliaromagna#alluvione#emiliaromagna#politica#italia#televisione#informazione#giornalismo#PNRR#UnioneEuropea
https://x.com/SavinoBalzano/status/1836837611845074949?t=zUTmU8s5R3-XF9mHDYQtMw&s=19
La drammatica #Alluvione viene ovviamente imputata agli epocali cambiamenti climatici del nostro tempo. Credo sia una bella paraculata, utile a nascondere l'assoluta incapacità di certi amministratori, a partire da #Bonaccini, che non hanno fatto assolutamente nulla per prevenire questo disastro. Anzi.
Attendo che compaiano in tv con la solita felpina della protezione civile a fare gli eroi.
La verità è che episodi come questi, nella loro tragicità, vengono strumentalizzati per spingere a tavoletta la folle ideologia #green, da scaricare ovviamente sulle spalle dei poracci: credo che sul punto l'ex Presidente dell'#EmiliaRomagna saprà fornire il suo dotto contributo dalle democraticissime istituzioni dell'#UE.
La mia a #5Notizie, #RadioCusanoCampus.
#alluvioneromagna#alluvioneemiliaromagna
https://x.com/SavinoBalzano/status/1858796809008660926?t=zoW1JPySaEFK3hgRxcxNgg&s=19
Solo due numeri sulle elezioni regionali perché quello che leggo ha del surreale: va bene tutto, ma il metro deve essere lo stesso.
In #Umbria i votanti passano da 455.000 a 366.000 e, dunque, l'affluenza cala dal 65% al 52%. Nel 2019 a #Tesei servirono 255.000 voti per vincere. Ieri a #Proietti ne sono bastati 182.000. Lo sconfitto del 2019 (Bianconi) di voti ne prese 166.000. Questo per dire che non c'è stato alcun plebiscito e la spazzatura che si legge in giro (tipo «non ci hanno visto arrivare») è semplicemente comica. Gli umbri hanno punito l'amministrazione uscente che evidentemente non ha convinto, ma il loro disappunto lo hanno espresso restando a casa. Questi sono i numeri, nessun «avanti popolo, alla riscossa!».
In #EmiliaRomagna, i votanti passano da 2.400.000 a 1.600.000: un vero e proprio bagno di sangue. L'affluenza passa dal 68% al 46%: un salasso allucinante. Qui il vincitore #DePascale ha preso 922.000 voti: non solo sono meno di quanti ne prese #Bonaccini, ma sono persino meno di quanti ne prese Borgonzoni (1.014.000) che nel 2020 fu sconfitta. Che vuol dire? Semplicissimo: l'amministrazione uscente è stata massacrata dall'#astensionismo, letteralmente fustigata. Anche qui, dunque, rispetto assoluto per il risultato e augurio di buon lavoro al Presidente, ma nessuna «bandiera rossa trionferà!». Cerchiamo di essere seri, un minimo.
L'astensione per me è da sciocchi (anche perché rattrista, ma conta 0 da tutti i punti di vista), ma abbiamo due sole possibililità (sempre se vogliamo essere seri): o vale niente, sempre, o la si considera, sempre.