ASISAKOV_CHANNEL Telegram 1025
Быстрый принт для контестов

Я думаю каждый из нас горел в моменты, когда надо быстро решить контест с ограничением и написать типа оптимальный код, который типа пройдёт тесты и не только влезет в память, но еще и за 2 секунды отработает.

Часто бывало такое, что вроде уже наоптимизировал код, а он ну совсем не проходит по времени и надо еще 50-100 мс откуда-то достать

Оказалось, что привычный для нас print() - это функция поверх sys.stdout.write()

Пока она отработает до вывода в аутпут инфы, может пройти достаточно много времени. И вот почему - исполняя print(), интерпретатор Python выполняет несколько шагов:

1️⃣Принимает аргументы (*args). То есть мы можем написать print(a, b, c).
2️⃣Преобразует каждый аргумент в строку. Если мы передадим число i, print(i) вызовет str(i).
3️⃣Джойнит аргументы, используя разделитель (по умолчанию пробел).
4️⃣Добавляет в конец строки символ (по умолчанию \n).
5️⃣Вызывает sys.stdout.write()

Ну вот сами посчитайте количество дополнительной логики

Я спросил у гпт в чем отличие, и вот что он выдал:

print() — это как заказать в ресторане "комплексный обед". Вы просто говорите название, а повар сам готовит салат, суп и второе, а затем подает все вместе. Это удобно, но требует от кухни больше действий

sys.stdout.write() — это как напрямую сказать повару: "Дай мне кусок хлеба", "Теперь положи на него сыр". Вы даете точные, низкоуровневые команды. Это быстрее для повара, но требует от вас больше указаний

В цикле, где эти операции повторяются миллионы раз, накладные расходы на дополнительную логику print() становятся заметными.


Звучит немного кринжовенько, но думаю основной смысл понятен. Кстати, в цикле на 10М вызовов функции записи, sys.stdout.write() почти в 2 раза быстрее обычного принта

Надеюсь, инфа была полезной и сэкономит вам драгоценные милисекунды на контестах.

P.S. Этой инфой поделились ребята с моей команды, так что в первую очередь спасибо им💪🏿

#python #code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1753



tgoop.com/asisakov_channel/1025
Create:
Last Update:

Быстрый принт для контестов

Я думаю каждый из нас горел в моменты, когда надо быстро решить контест с ограничением и написать типа оптимальный код, который типа пройдёт тесты и не только влезет в память, но еще и за 2 секунды отработает.

Часто бывало такое, что вроде уже наоптимизировал код, а он ну совсем не проходит по времени и надо еще 50-100 мс откуда-то достать

Оказалось, что привычный для нас print() - это функция поверх sys.stdout.write()

Пока она отработает до вывода в аутпут инфы, может пройти достаточно много времени. И вот почему - исполняя print(), интерпретатор Python выполняет несколько шагов:

1️⃣Принимает аргументы (*args). То есть мы можем написать print(a, b, c).
2️⃣Преобразует каждый аргумент в строку. Если мы передадим число i, print(i) вызовет str(i).
3️⃣Джойнит аргументы, используя разделитель (по умолчанию пробел).
4️⃣Добавляет в конец строки символ (по умолчанию \n).
5️⃣Вызывает sys.stdout.write()

Ну вот сами посчитайте количество дополнительной логики

Я спросил у гпт в чем отличие, и вот что он выдал:

print() — это как заказать в ресторане "комплексный обед". Вы просто говорите название, а повар сам готовит салат, суп и второе, а затем подает все вместе. Это удобно, но требует от кухни больше действий

sys.stdout.write() — это как напрямую сказать повару: "Дай мне кусок хлеба", "Теперь положи на него сыр". Вы даете точные, низкоуровневые команды. Это быстрее для повара, но требует от вас больше указаний

В цикле, где эти операции повторяются миллионы раз, накладные расходы на дополнительную логику print() становятся заметными.


Звучит немного кринжовенько, но думаю основной смысл понятен. Кстати, в цикле на 10М вызовов функции записи, sys.stdout.write() почти в 2 раза быстрее обычного принта

Надеюсь, инфа была полезной и сэкономит вам драгоценные милисекунды на контестах.

P.S. Этой инфой поделились ребята с моей команды, так что в первую очередь спасибо им💪🏿

#python #code

BY asisakov


Share with your friend now:
tgoop.com/asisakov_channel/1025

View MORE
Open in Telegram


Telegram News

Date: |

6How to manage your Telegram channel? While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. A Telegram channel is used for various purposes, from sharing helpful content to implementing a business strategy. In addition, you can use your channel to build and improve your company image, boost your sales, make profits, enhance customer loyalty, and more. On Tuesday, some local media outlets included Sing Tao Daily cited sources as saying the Hong Kong government was considering restricting access to Telegram. Privacy Commissioner for Personal Data Ada Chung told to the Legislative Council on Monday that government officials, police and lawmakers remain the targets of “doxxing” despite a privacy law amendment last year that criminalised the malicious disclosure of personal information. How to Create a Private or Public Channel on Telegram?
from us


Telegram asisakov
FROM American