Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Day One #Token2049
Our CEO Star_OKX takes the stage at TOKEN2049
The new money era is here:
✅ Everything onchain
✅ Self-custody first
✅ Verify before trust
OKX is building this future - one wallet, one transaction at a time.
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
Singapore, lights on. #Token2049
Yesterday, Star_OKX takes the big stage and Haider brings us the fireside chat.
Stay locked, fam 👀
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
Our CEO
Star_OKX
takes the stage at #TOKEN2049
The new money era is here:
✅ Everything onchain
✅ Self-custody first
✅ Verify before trust
OKX is building this future - one wallet, one transaction at a time.
Still day one.
Check out now👈
Our Socials:
⚜️TG | DC | Wallet TG | Wallet Announcement | OKX on Spotify | Twitter/X | YouTube
‼️Please check the authenticity of all OKX links or channels at OKX channel verification
The BNB Chain Incubation Alliance, Singapore agenda is here 🤩
Join us at #Token2049: https://lu.ma/m91xxlbk
This event is sponsored by $WHY, Lorenzo Protocol, D11 Labs, Seraph, Xterio, Solv & Particle Network
Join us at #Token2049 as we continue our mission to onboarding the next billion Web3 users at BNB Incubation Alliance, Singapore 🇸🇬.
Be part of the movement via the link below 👇
https://lu.ma/m91xxlbk
💖 We're thrilled to announce that we'll be part of the exclusive #TOKEN2049 side event, 'DeFi 2049 – Beyond THE Horizon', co-hosted by our partner DEX, THENA, & DeThings! 🎙️
Join us alongside BNB chain, Simon's Cat, Orbs network, Lista, and many more projects!
🧵 Learn more: lu.ma/h9w9yxww
🚀#TOKEN2049 Dubai wrapped up a few impactful days of ecosystem insights and momentum.
VCs remain selective, but capital is shifting towards liquid opportunities, AI infrastructure, and RWAs.
Sui Foundation saw strong engagement from builders and investors, Sonic Labs is gaining traction, Falcon Finance marked its public launch, and there’s much more to unpack 🙌🏼
Read the full recap for detailed insights — and find out where to meet us next!
Guess where we are 🐤✨️
It's been a busy #token2049 and we are not stopping!
Up next, we are at Algorand Royale where our Business Partner of Ecosystems, Alessia Baumgartner, will be sharing on a panel "How to survive and thrive as a Web3 company" 🙌🔥
Join us here 🤩
Excited to be one of the co-hosts and partners of this reception happening alongside #Token2049 in 🇸🇬!
Let's get connected and build together 🫡⚡
Date: 17th September, 2024
Time: 6PM - 10PM
Don't wait, register here🔗
KBW has been a blast 🐥✨️
It's been an amazing night hosting all of our guests at DWF Labs Haus 🎉
We hope you enjoyed your time with us and we'll see you again at our next event 🫡🔥
Next stop 🇸🇬 here we come! #TOKEN2049