Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
🎓✨ CONGRATULATIONS! ✨🎓
To all Jimma University students who passed the exit exam and will graduate this Saturday! 🌟
Your hard work and determination have led to this proud moment. Wishing you a future full of success, peace, and new beginnings! 🌍🎉
#JIFAR CAREER
Eid Mubarak! ✨ May this special day bring you joy, peace, and countless blessings. Wishing you and your loved ones happiness, prosperity, and togetherness. Enjoy the festivities and spread kindness! 🌙💙
#JIFAR CARRER
For those of you who find creativity challenging, try this
✨ Team up with someone who has similar goals or works on related projects.
Their ideas and experiences might open new doors and inspire fresh solutions.
Collaboration can increase your creativity and lead to amazing results—give it a try! 👊
#JIFAR TUTOR
@JifarSupport
Honoring and Memorizing this photo☺️😊
## JIFAR TUTOR:Unleash Your Potential, Embrace the JImma Aba Jfar Legacy
JIFAR TUTOR:Where History Inspires Your Future
> At JIFAR TUTOR, we're dedicated to bringing history to life, inspiring students to unlock their own potential and shape their own futures.
> Our Legacy
> * Student Spotlight Series: Hear from real students who are finding their own voices and shaping their own destinies, inspired by JImma Aba Jfar's example.
> * "Beyond the Textbook" Experiences: Explore local historical sites, connect with experts, and delve deeper into JImma Aba Jfar's legacy through real-world experiences.
> With JIFAR TUTOR, you'll:
> * Develop essential skills for success in the 21st century: critical thinking, communication, and problem-solving.
> * Discover your own leadership potential and find inspiration for creating positive change.
📝Visit Our channels: @JIFAR1
🛎Call 24/7':@JifarSupport 0953484398
#JIFAR TUTOR
#JIFAR TUTOR
New Job opening‼️
🎆We are Jifar Tutor🎆
✍️Place: Tshire
✍️Student: Grade 11
✍️Duration: 4 or 3 in a week
✍️Salary: monthly by Agreement
✍️#Females apply for this job
✍️ Subject All
📖We need punctual and who have excellent professional ethics and applicants for this position.
#Jifar HomeTutor #ጅፋር#ቤትለቤት(Online) #አስጠኚ
#በፈለጉን#ሁሉ#አለን! #
#የልጅዎ#እና#የርስዎ#ቀዳሚ#አጋር!
በዚህ ያናግሩን @JifarSupport
🎆 Jifar Tutor your choice🎆
ከታች ያለዉን የቴሌግራም ቻናላችን ይቀላቀሉ
👉@Jifar1
✅Job status - CLOSED‼️