Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
#AdolescentiERagazzi
📚Afterlove - di Tanya Byrne
‼️ Minimo Storico ‼️
💰A soli 11,09€ invece di 19,00€
👉https://amzlink.to/az0cFQ2Nl3iQA
Quando il tempo sembrerà finire, le verità più profonde emergeranno. Scopri una storia che sfida la vita, l'amore e l'identità. La tua curiosità ti guiderà.
#Ad & Info
💣💣PREZZO BOMBA!!!💣💣
#AdolescentiERagazzi
📚Carry on - di Rainbow Rowell
💰A soli 6,69€ invece di 13,50€
👉https://amzlink.to/az0WZROQz2EUJ
Simon Snow è un giovane mago alle prese con il suo potere instabile e una missione che potrebbe cambiare tutto. Una battaglia epica tra amicizia e destino ti attende.
#Ad & Info
#AdolescentiERagazzi
📚Fabio De Pandi. Il piccolo principe - di Raffaele Sardo
💰A soli 5,88€ invece di 10,00€
👉https://amzlink.to/az0TBxTMEkVkV
Una storia toccante e struggente di un amore genitoriale travolto dalla tragedia. Scopri cosa significa lottare per la memoria di un piccolo angelo.
✖️TERMINATA✖️
🔔Attiva le notifiche per non perderti la prossima occasione!
#Ad & Info
#AdolescentiERagazzi
📚Eccoci ancora qui - di Becky Albertalli, Adam Silvera
💰A soli 12,95€ invece di 18,50€
👉https://amzlink.to/az0itnut0DqNx
Dopo un anno di college, Ben si trova in un mare di emozioni e confusione. Riuscirà a trovare il suo equilibrio tra amour e identità? Scoprilo.
✖️TERMINATA✖️
🔔Attiva le notifiche per non perderti la prossima occasione!
#Ad & Info
❌❌ERRORE O AFFARE?💣😱
#AdolescentiERagazzi
📚Effy e James. La nostra storia: Se è con te, sempre-Dimmi che ci credi anche tu - di Eleonora Gaggero
💰A soli 5,28€ invece di 18,90€
👉https://amzn.to/49yLedQ
In un mondo di sfide e scelte, Effy e James affrontano il potere dell’amore e dell'amicizia. Scopri se riusciranno a superare gli ostacoli che li separano.
✖️TERMINATA✖️
🔔Attiva le notifiche per non perderti la prossima occasione!
#Ad & Info
💣💣PREZZO BOMBA!!!💣💣
#AdolescentiERagazzi
📚Unforgiven - di Lauren Kate
‼️ Minimo Storico ‼️
💰A soli 6,38€ invece di 13,00€
👉https://amzn.to/4nxG7OM
Un angelo caduto in preda ai ricordi di un amore perduto. La sua scelta lo segna per sempre, ma il passato è pronto a tornare a tormentarlo. Scopri cosa accade.
#Ad & Info
#AdolescentiERagazzi
📚La figlia degli abissi - di Rick Riordan
💰A soli 9,77€ invece di 18,00€
👉https://amzn.to/4hschcZ
Le tensioni si alzano alla Harding-Pencroft Academy. Le prove di fine anno riserveranno sorprese misteriose e sfide inaspettate. Chi ha il coraggio di affrontare le profondità?
#Ad & Info
#AdolescentiERagazzi
📚She drives me crazy. Mi fa impazzire - di Kelly Quindlen
‼️ Minimo Storico ‼️
💰A soli 8,94€ invece di 15,90€
👉https://amzn.to/3IWgCIG
In un incontro inaspettato, una sconfitta e un incidente cambieranno per sempre la vita di Scottie. Riuscirà a ricostruire i pezzi del suo cuore tra rivalità e nuove emozioni?
#Ad & Info
#AdolescentiERagazzi
📚Libere. Circe e le altre - di Sabina Colloredo
‼️ Minimo Storico ‼️
💰A soli 10,68€ invece di 16,00€
👉https://amzn.to/4hhRXuN
Scopri storie di donne forti e indomabili, che sfidano il destino. Un racconto che svela miti incontrastati e scelte audaci da non perdere.
#Ad & Info
💣💣PREZZO BOMBA!!!💣💣
#AdolescentiERagazzi
📚Non mi piacciono le sorprese - di Iris McClymont
‼️ Minimo Storico ‼️
💰A soli 6,00€ invece di 12,00€
👉https://amzn.to/3ITEi0i
Scopri il mondo di chi teme le sorprese ma è costretto a confrontarsi con emozioni inaspettate. Una storia che intreccia amore e crescita.
#Ad & Info
💣😱PREZZO ASSURDO!!!😱💣
#AdolescentiERagazzi
📚Prove INVALSI. Per la 3ª, 4ª, e 5ª classe elementare - di Giulia Bellini
💰A soli 3,96€ invece di 9,90€
👉https://amzn.to/45GHBkh
Scopri un metodo efficace per preparare i tuoi bambini alle prove INVALSI, con risorse mirate e strategie intuitive per affrontare al meglio l'esame.
#Ad & Info
#AdolescentiERagazzi
📚L'isola maledetta. Libro game - di Kurolily
💰A soli 9,94€ invece di 15,90€
👉https://amzn.to/476SPxB
Scopri un'isola avvolta da misteri e pericoli. Scegli il tuo destino tra avventure e insidie, ogni decisione conta. Preparati a vivere l'emozione nel tuo hands-on game.
#Ad & Info