TGViewer
PPC для сверхразумов | Александр Хитро PPC для сверхразумов | Александр Хитро @ppc_bigbrain · 3.88K subscribers
Post #1721 925
Плохо vs хорошо — сравнение сложности вычислений.

Предыдущие посты серии:

1. Документация по промптам.
2. Выбор нейронок.
3. Подготовка к разработке.
4. Оптимизация кода.
5. Если код не "летает".
6. Минимизируем вычисления.
7. Фатальный пример вычислений.
8. Порядок обработки данных.
9. Смерть производительности. Часть 1.
10. Смерть производительности. Часть 2.


Рассмотрим альтернативы сортировки и сложность их вычислений.

Пример 1: Найти максимальное значение.

❌ Плохо: Отсортировать таблицу по убыванию -> Взять первую строку.
Функции: Table.Sort + Table.First.
Сложность: O(n log n).
Почему плохо: сортируются сотни тысяч строк ради одной.

✅ Хорошо: Использовать функцию поиска максимума.
Функции: List.Max или Table.Max.
Сложность: O(n).
Результат: В разы быстрее.

————

Пример 2: Найти топ-10 самых дорогих товаров.

❌ Плохо: Сортировка всей таблицы -> Взять первые 10 строк.
Функции: Table.Sort + Table.FirstN.
Сложность: O(n log n).

✅ Хорошо: Использовать функцию частичной выборки.
Функции: List.MaxN или Table.MaxN.
Сложность: O(n) или O(n log k), где k — это всего 10 строк.
Результат: Экономия памяти, не нужно упорядочивать "хвост" таблицы.

————

Пример 3: Найти последнюю продажу для каждого клиента (внутри группы).

❌ Плохо: Группировка -> Внутри каждой группы. Сортировка -> Взять первую строку.
Функции: Table.Group + (each Table.Sort -> Table.First).
Сложность: O(n²) или O(n log n).
Катастрофически медленно на больших данных.

✅ Хорошо: Группировка -> Внутри группы поиск максимума.
Функции: Table.Group + (each List.Max).
Сложность: O(n).
Результат: Линейное выполнение за один проход.

————

Пример 4: Проверка наличия значения в списке.

❌ Плохо: Сортировка списка -> Бинарный поиск.
Функции: List.Sort + List.Contains.
Сложность: O(n log n).

✅ Хорошо: Прямой поиск или преобразование в запись (Hash set).
Функции: List.Contains или List.Buffer + Record.FromList.
Сложность: O(n).

————

Пример 5: Поиск соответствий (аналог ВПР или VLOOKUP).

❌ Плохо: Добавление столбца с фильтрацией внутри.
Функции: Table.AddColumn + (each Table.SelectRows).
Сложность: O(n × m). Квадратичная сложность (Nested Loop).

✅ Хорошо: Объединение таблиц (Merge).
Функции: Table.NestedJoin или Table.Join.
Сложность: O(n + m). Использует Hash Match.

————

Пример 6: Сортировка внутри циклов.

❌ Плохо: List.Transform или Table.AddColumn с Table.Sort внутри.
Сложность: O(n² log n) и хуже.

✅ Хорошо: Один проход с агрегатами или предварительная группировка.
Сложность: O(n).

————

Пример 7: Проверка существования значения.

❌ Плохо: Sort + Contains
Сложность: O(n log n)

✅ Хорошо: List.Contains
Сложность: O(n)

✅ Ещё лучше при множественных обращениях к списку для его проверки:
List.Buffer + lookup
Сложность: O(n + m)

В следующем посте — когда в Power Query данные сортировать можно и нельзя.

via @ppc_bigbrain
More from @ppc_bigbrain
  1. Jun 3, 2026эмэйзинг нейродрисня когда пытаешься вправить нейтронке мозги из задницы в процессор, созд…
  2. May 27, 2026ну и чё теперь делать? а ведь был шанс via @ppc_bigbrain
  3. May 23, 2026маркетологи, как вам портрет платежеспособной аудитории? сохраняем или осуждаем? via @ppc_…
  4. May 21, 2026Что вы попробовали в своей карьере из любых родов деятельности один раз и сразу поняли, чт…
  5. May 20, 2026шта? абисните плес, я прост с деревни шёл 8к26 век, впнологи щщщетали цену клика калкурент…
  6. May 14, 2026«а мы агентство, которое скликивает рекламу по заказу яндекса» кулстори от того, кто умеет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →