Перейти к содержимому

Думай, прежде чем использовать циклы: «Big O» для PowerShell-разработчиков — Йонас Соммер Нильсен...

PowerShell Conference Europe

0:00 / 0:00

Думай, прежде чем использовать циклы: «Big O» для PowerShell-разработчиков — Йонас Соммер Нильсен...

187 просмотров · 1 месяц назад
PowerShell Conference Europe
6,53 тыс. подписчиков
187 просмотров · 1 месяц назад
В этой лекции Йонас Заммер-Нильсен знакомит разработчиков PowerShell с концепцией «большой О» и объясняет, что цель состоит в том, чтобы оценивать производительность, подсчитывая количество циклов и вложенных циклов. Он описывает «большую О» как способ оценить, сколько операций выполняет код или сколько памяти он использует, и говорит, что практическая интуиция заключается в поиске повторяющихся операций. Затем он разбирает простой скрипт, который генерирует список пользователей из CSV-файла и создает 10 000 объектов пользователей. Подсчитывая операции построчно, он показывает, как фиксированные затраты на чтение CSV-файла можно считать небольшими по сравнению с циклом, который выполняется один раз для каждого сгенерированного пользователя. Таким образом, он упрощает сложность до O(n). Далее Йонас использует задачу поиска дубликатов в списке пользователей, чтобы показать подход O(n²). Наивная версия проходит по списку один раз для каждого пользователя и снова проверяет каждого второго пользователя, что приводит к большому количеству операций и медленной работе. Он использует этот пример, чтобы показать, почему вложенные циклы плохо масштабируются. Затем он предлагает альтернативный подход, использующий хеш-таблицу. Сохраняя данные о пользователях в хеш-таблице и проверяя принадлежность к группе вместо повторного сканирования всего списка, ту же задачу можно выполнить с помощью одного цикла. Он также вводит понятие логарифма n, используя бинарное дерево поиска, и объясняет, что высота дерева медленно увеличивается по мере удвоения набора данных, что делает поиск быстрее, чем линейный или квадратичный рост. В заключительной части лекции он показывает, как PowerShell может скрывать затраты на производительность, особенно при построении строк с помощью `+=`. Он сравнивает конкатенацию строк с `Join` и `StringBuilder` и отмечает, что `+=` может быть намного медленнее, особенно в старых версиях PowerShell. В заключение он говорит, что размышления бесплатны, измерения дешевы, а профилирование в основном используется, когда проблема уже существует. Разделы: 00:00:00 Думай, прежде чем запускать циклы: «Мышление в духе Big O» для разработчиков PowerShell — Йонас Зоммер Нильсен — PSConfEU 2026 00:00:18 Big O в PowerShell 00:02:28 Основы Big O 00:03:35 Создание демонстрационных пользователей 00:08:44 От подсчетов к сложности 00:09:59 Чтение графиков сложности 00:12:36 Поиск дубликатов медленным способом 00:17:20 Хэш-таблицы на помощь 00:18:39 Понимание Log N 00:21:59 Скрытые затраты в PowerShell 00:25:31 Бенчмарки построения строк 00:28:22 Заключительные выводы 00:28:56 Вопросы и обсуждение