Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
🚨🇻🇪#VIRAL
Trabajadores petroleros de Venezuela reclaman que ellos se parten el lomo sacando el petróleo que "Tanto le gusta a Trump", "para los Chinos, para los Rusos" y son incapaces de darles un salario digno.
Cómo lo merecen todos los trabajadores de Venezuela
Les eaux d'Oman sont devenues rouges
L'eau près de la ville de Mirbat a changé de couleur en raison d'une mortalité massive de crevettes, ont indiqué des habitants à Sputnik.
Cette mortalité est due à des variations de température et à des fluctuations du taux d'oxygène dans l'eau de mer, et non à la pollution, selon les autorités.
#viral
👮♀️Un robot policier humanoïde patrouille aux côtés des forces de l'ordre
On dirait le tournage d'un nouvel opus du célèbre film de science-fiction RoboCop, mais non, la scène est bien réelle.
Cette séquence a été immortalisée à Shenzhen, dans sud de la Chine et la vidéo ne cesse de faire le tour des réseaux sociaux.
🤔 Mais est-ce que tout le monde est prêt à faire confiance à un robot policier?
#viral
▶️ Un éléphant enragé a tué un homme dans un temple hindou en Inde
Amené sur place pour une cérémonie de bénédiction, l’animal s'est libéré de sa chaîne et a tout saccagé pendant deux heures, selon la presse locale.
Il a également blessé une autre personne avant d'être maîtrisé à l'aide d'une fléchette tranquillisante.
#viral
🌋 Les cendres d'un volcan transforment le jour en nuit
Le volcan Mayon, l'un des plus actifs aux Philippines, est entré en éruption.
⛔️ Les autorités ont interdit l'accès dans un rayon de six kilomètres pour protéger la population.
#viral
Suspendus la tête en bas dans une rivière: un rituel japonais depuis 500 ans
Du calme, tout le monde. Ce n’est ni la mafia, ni une punition divine.
Il s’agit d'une tradition de la ville de Chikuma, dans la préfecture de Nagano.
Chaque année, quatre hommes portant des masques de lion (qui symbolisent les divinités) se jettent volontairement la tête la première pour toucher l’eau et… laver tous les malheurs de l’année à venir. #viral
❄️ Vols annulés, arbres déracinés: Moscou frappée par une tempête de neige en plein printemps
Le Centre météorologique russe a déclaré le niveau d’alerte orange dans la capitale, en vigueur jusqu’à mardi matin.
#viral
Incendie sur une base abritant des bombardiers américains utilisés contre l'Iran
🔥 Le feu a ravagé la base britannique de RAF Fairford, "d'importance critique" pour l'Europe et l'US Air Force, rapportent les médias.
#viral
📹☀️Des "soleils jumeaux" ont illuminé le ciel de Russie
Cette couronne lumineuse qui entoure le soleil est créée par la réfraction de la lumière dans les cristaux de glace des nuages de haute altitude.
Vidéo tirée des réseaux sociaux
#viral
@grand_reequilibrage
📹Le Président mozambicain domine nettement par sa taille la Première ministre italienne dans cette vidéo devenue virale
Les internautes ont été surpris par cette différence entre Giorgia Meloni et Daniel Chapo qui éclipse les sujets de leurs discussions à Rome.
#viral
Abonnez-vous @sputnik_afrique
🔸Sputnik Afrique | X🔸
#viral | Abiy Ahmed Takes a Spin in Turkish-Made EV Gifted by Turkish President
Recep Tayyip Erdogan is currently on an official visit to Ethiopia.
Subscribe to @sputnik_africa
🔸Sputnik Africa | X🔸