Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
#ULTIMORA
Giorno del Ricordo, spaccata la targa in memoria delle vittime delle #Foibe a Firenze, nella piazza dedicata ai martiri dell'Istria e della Venezia Giulia. Ripristinata solo pochi giorni fa, dopo un precedente vandalismo, è stata rotta di nuovo
🗞@ultimora24
Ci sono pagine di storia poco raccontate perché parlano di persone comuni.
Di case rubate.Di notti interrotte. Di vite spezzate nel silenzio.
Tra il 1943 e il 1947 migliaia di italiani dell’Istria, di Fiume e della Dalmazia furono portati via così: senza spiegazioni, senza ritorno.
Molti vennero gettati nelle foibe.
Senza un nome. Senza una tomba.
E chi sopravvisse fu costretto a lasciare tutto: la propria terra, i ricordi, l’identità.
Oltre 250.000 persone in fuga con una valigia piena di assenze.
E all’arrivo, spesso, insulti e diffidenza.
Per troppo tempo questa storia è stata ignorata.
Ma il dolore non sparisce se lo cancelli.
#italia#storia#foibe#accaddeoggi#storiaitaliana
#Foibe#GiornoDelRicordo#Storia
In queste settimane si parla molto delle foibe. Spesso, però, la discussione viene strumentalizzata per fini politici e propagandistici, senza alcuna volontà di fare luce sulla complessità storica o di cercare una vera riconciliazione.
Per comprendere davvero quella tragedia, bisogna partire dalla STORIA, dai fatti documentati e inoppugnabli che l'hanno preceduta. Solo così si può onorare tutte le vittime innocenti e togliere ossigeno a chi alimenta odi per un pugno di voti.
Il mito degli "italiani brava gente" nasconde una rimozione collettiva. Secondo documenti delle Nazioni Unite e studi storici (come quelli di M. Palombo per la BBC), durante il periodo coloniale e la Seconda Guerra Mondiale, fascisti e esercito italiano uccisero oltre un milione di persone, tra cui 300.000 nella sola Jugoslavia.
800 italiani furono dichiarati criminali di guerra dalle Nazioni Unite e mai processati. Nei campi di concentramento italiani, come quello di Rab (Arbe), morirono migliaia di jugoslavi. L'Alto Commissario per la Provincia di Lubiana documentò nel 1942 condizioni atroci nel campo di Arbe. La risposta del generale Gastone Gambara fu: "Logico ed opportuno che campo di concentramento non significhi campo d'ingrassamento".
Circolari militari come la 4C del generale Roatta sancivano la ferocia della repressione: "testa per dente", non "dente per dente". Ordini che portarono a eccidi come quello di Gramozna Jama.
Già dagli anni '20, il fascismo attuò nelle terre del confine orientale una spietata politica di snazionalizzazione, italianizzazione forzata (cognomi, toponimi, lingue), chiusura di scuole e associazioni slave, deportazioni. I territori che l'Italia rivendicava e occupò nell'aprile 1941 erano abitati a maggioranza da popolazioni slave, come documentano anche le carte etniche di Cesare Battisti.
Le vittime accertate delle foibe sono circa 2.000-3.000. Tra loro ci furono innocenti, ma anche fascisti e collaborazionisti che in quelle zone si erano macchiati di atrocità contro la popolazione civile. Non si può estrapolare quegli eventi dal loro contesto storico: furono, in parte, l'onda lunga di una violenza iniziata molto prima.
Prima di giudicare, l'Italia dovrebbe fare i conti con la sua storia di aggressioni: dall'Eritrea alla Somalia, dalla Libia alla Grecia, all'invasione della Jugoslavia nel 1941. Quando avremo una giornata del ricordo per tutte le vittime innocenti dei crimini italiani? Sarebbe un atto di pace e riconciliazione vero.
La riconciliazione nazionale è già avvenuta il 25 aprile 1945, con la sconfitta del fascismo e la vittoria della Liberazione. Come scriveva Giorgio Bocca, si può avere pietà per le persone, ma non si può revisionare l'orrore delle idee barbare e assassine. Onoriamo la memoria di tutti gli innocenti, rispettando la verità storica.
#StoriaVera#Resistenza#Antifascismo#MemoriaCondivisa
https://www.marx21.it/storia-teoria-e-scienza/foibe-si-foibe-no-come-si-arriva-storicamente-a-quegli-avvenimenti-tragici/