TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
PPC для сверхразумов | Александр Хитро

16 Feb, 11:57

Открыть в Telegram Поделиться Пожаловаться

Плохо 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

737 1 6 19 15
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot