Скорее всего уже слышали, что складывать строки через + это плохая практика. Падение производительности, и всё такое. Без лишних слов, давайте измерять:
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
Pink Pasta
🍝 Ingredients:
- 300 g pasta
🍄Sauce:
- 250 g cooked beetroot 🥗
- 100 g cashew nuts 🥜
- 50 ml water 💧
- 1 tbsp soy yogurt skyr 🥛
- 1 tsp oil 🫒
- 1 tsp agave syrup 🍯
- 1 tsp salt 🧂
- 1 tsp pepper 🌶️
- 1 tsp vegetable broth 🍲
Preparation:
1. 🥄 Soak the cashews in warm water for 10 minutes, then drain. Meanwhile, cook the pasta 🍲.
2. 🥢 Dice the beetroot and blend it with the other sauce ingredients until smooth.
3. 🍳 Crumble the tofu and sauté in oil, then add the beetroot and chickpeas. Fry until golden.
4. 🍝 Mix the pasta with the sauce, add your favorite toppings, and enjoy!
#PinkPasta#VeganRecipe#HealthyEating
@dishes
Carrot Cake Bites 🥕🍰
Ingredients:
- 135 g rolled oats 🌾
- 120 g walnuts 🌰
- 170 g dried dates 🌴
- 1 carrot 🥕
- Seeds from a vanilla bean 🌸
- 1 tbsp maple syrup 🍁
- 1 tsp cinnamon ✨
- Grated coconut 🥥
Preparation:
1. Soak the dates in warm water, then drain after 10 minutes 💧
2. Mix all ingredients in a high-speed blender until coarse 🌀
3. Shape the mixture into 30 g balls and roll in grated coconut 🍥
#HealthySnack#CarrotCakeBites#VeganRecipe
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶️
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
🌿Udon Noodle Bowl 🍜
Ingredients
• 🫒 Oil for frying
• 100 g smoked tofu 🧆
• 1/2 tsp chili 🌶
• 1/2 tsp thyme 🌱
• 1/2 tsp coriander 🌿
• 2 tbsp soy sauce 🍶
• 100 g mushrooms 🍄
• 2 cloves garlic 🧄
• 300 g udon noodles (pre-cooked) 🍜
Sauce:
• 1 tbsp paprika paste 🌶
• 2 tbsp agave syrup 🍯
• 5 tbsp soy sauce 🍶
• 200 ml water 💧
• 1 tbsp starch 🌽
• 1 tbsp white sesame 🥢
Side dishes for the bowl:
• 1 bok choy 🥬
• Red cabbage 🥬
• Cucumber 🥒
• Avocado 🥑
• Lime 🍈
• Spring onions 🧅
• Sesame seeds 🌱
• Paprika 🌶
Preparation:
1. 🔥 Fry the smoked tofu in oil, deglaze with soy sauce, season & set aside.
2. 🥄 Mix all the ingredients for the sauce together.
3. 🍄 Sear the mushrooms and garlic, deglaze with the sauce, and stir in the udon noodles.
4. 🍲 Fill the bowl with the udon noodles, tofu, and all the remaining ingredients.
#VeganRecipe🌱#UdonNoodles🍜#HealthyEats💚#AsianCuisine🍲#PlantBased
@dishes
🌿Udon Noodle Bowl 🍜
Ingredients
• 🫒 Oil for frying
• 100 g smoked tofu 🧆
• 1/2 tsp chili 🌶️
• 1/2 tsp thyme 🌱
• 1/2 tsp coriander 🌿
• 2 tbsp soy sauce 🍶
• 100 g mushrooms 🍄
• 2 cloves garlic 🧄
• 300 g udon noodles (pre-cooked) 🍜
Sauce:
• 1 tbsp paprika paste 🌶️
• 2 tbsp agave syrup 🍯
• 5 tbsp soy sauce 🍶
• 200 ml water 💧
• 1 tbsp starch 🌽
• 1 tbsp white sesame 🥢
Side dishes for the bowl:
• 1 bok choy 🥬
• Red cabbage 🥬
• Cucumber 🥒
• Avocado 🥑
• Lime 🍈
• Spring onions 🧅
• Sesame seeds 🌱
• Paprika 🌶️
Preparation:
1. 🔥 Fry the smoked tofu in oil, deglaze with soy sauce, season & set aside.
2. 🥄 Mix all the ingredients for the sauce together.
3. 🍄 Sear the mushrooms and garlic, deglaze with the sauce, and stir in the udon noodles.
4. 🍲 Fill the bowl with the udon noodles, tofu, and all the remaining ingredients.
#VeganRecipe🌱#UdonNoodles🍜#HealthyEats💚#AsianCuisine🍲#PlantBased
@dishes
🌾Oriental Mujaddara 🌾
🌾 Ingredients:
🍚 200g rice
🥫 1 can (300g) cooked brown lentils
🧴 Oil for frying
🧅 3 large white onions
🧅 2 red onions
🧂 Pinch of salt
🥄 150 ml vegetable stock powder
🌿 1 tsp cumin
🧂 Salt and pepper
🍃Yoghurt dip:
🥄 500g soy yogurt
🍋 Juice of half a lemon
🧂 1/2 tsp salt
🧄 2 cloves of garlic
🌿 1 bunch of chives
🌈Toppings:
🌿 Chives, 🍈 pomegranate seeds
#OrientalMujaddara#MiddleEasternFlavors#VeganRecipe#PlantBased#ComfortFood
@dishes
High Protein Quinoa Balls Recipe🥗💪
Ingredients for Quinoa Balls:
🥣 75g quinoa
🌿 3 tsp canola oil
🧅 1 red onion
🧄 2 cloves garlic
🥕 1 small carrot
🌾 10g rolled oats (tender)
🌱 35g soy granules
🫚 1 tsp vegetable broth
🌽 2 tbsp cornstarch
🌿 1 handful of parsley
Ingredients for Filling:
🌿 1 handful of chives
🌱 1 tbsp vegan cream cheese
🍋 Quarter lemon
Spices:
🧂 Salt
🌶️ Chili
🧂 Pepper
Preparation🥘:
1️⃣ Cook the quinoa & soy granules according to the packaging. Then drain each one.
2️⃣ Chop onions & garlic 🧅🧄 and sauté in 1 tsp canola oil.
3️⃣ Grate or finely chop the carrots 🥕 and add to the pan for 3 minutes. Finely chop parsley 🌿.
4️⃣ Mix quinoa, soy granules, onions, garlic, carrots, oats, vegetable broth, parsley & cornstarch in a bowl 🥣. Leave to swell for 3 minutes.
5️⃣ Prepare the filling: mix vegan cream cheese, lemon juice 🍋, and chives 🌿. Season.
6️⃣ Season the quinoa mixture, form 5 balls, press in with your thumb, fill with the dip, and close the balls.
7️⃣ Fry the balls in 2 tbsp canola oil until golden.
✨Enjoy your high-protein snack!💪🌱
#HealthyEating#VeganRecipe#ProteinBoost#QuinoaBalls#PlantBased#MealPrep
@dishes