Предыдущие посты серии:
1. Документация по промптам.
2. Выбор нейронок.
3. Подготовка к разработке.
Памятка:
⚡ В Power Query последовательно выполняются все связанные запросы в цепочке.
⚡ Если в последнем запросе 5 строк кода, но перед ним в пайплайне их — 5000, то выполнятся все 5005 строк.
⚡ Код начинаем оптимизировать с первого же запроса.
⚡ Оптимизация последнего запроса не спасёт, если перед ним 50 медленных с вычислениями O(n × m), O(n²), O(nᵏ) и лишними операциями.
⚡ «Big O» нотация.
⚡ Пишем промпт в несколько нейросетей и повторяем:
— С дебагами ошибок.
— С оптимизацией.
⚡ Пишем промпт «сэндвичем»:
— Внимание в начале.
— Основная часть.
— Внимание в конце.
————
✅ Старт промпта — кратко (attention в начале):
— Язык и версия.
— Среда разработки и версия.
— Об исходных данных.
— Проблема.
— Задача.
— Что где находится.
— Названия всех объектов.
— Что нужно получить в результате.
✅ Кусок кода, который нужно оптимизировать (если он есть).
✅ Явное указание, что нужно сделать с названиями таблиц, полей, списков, библиотек, запросов, функций, которые в разных операциях нужно использовать из уже имеющихся в вашем коде. Это нужно для бесшовной и безошибочной интеграции кода в ваш пайплайн.
✅ Списочное иерархичное явное перечисление всех операций по точным шагам, как в конспекте из вуза при подготовке к экзамену.
✅ Точные примеры "было–стало", чтобы нейронка явно поняла, что делать:
1. Исходные данные (было).
2. Итоговый результат (стало).
3. Явное пояснение, чем отличается результат от исходных данных.
Для чего это нужно — чтобы нейронка не гадала за вас, что вам нужно. Чем более явными будут инструкции, тем быстрее вы получите правильно и быстро работающий код.
✅ Завершаем «сэндвич» промпта финальным блоком внимания (attention в конце):
1. Внимательно проанализируй задачу и приложенный код, если он предоставлен.
2. Если тебе не хватает явных инструкций — задай мне точные вопросы.
3. Найди все узкие горлышки.
4. Оптимизируй код под производительность.
5. Ускорь отработку.
6. Обрабатывай только уникальные значения.
7. Используй операции с количеством вычислений O(1), O(log n), O(n), O(n + m), но как можно меньшее из них — для быстрой обработки сотен тысяч строк.
8. Не используй операции с количеством вычислений: O(n log n), O(n × m), O(n²), O(nᵏ), O(2ⁿ), O(n!).
9. Используй аналоги векторной обработки всего массива целиком.
10. Используй самые современные методы оптимизации M-кода в Power Query, которые советуют известные и уважаемые профессионалы BI-индустрии, эксперты со статусом MVP от Microsoft, авторы книг, курсов, блогов, статей, Ютуб-каналов по Power BI и Power Query.
11. Используй функции только из справки Microsoft по Power Query.
12. Используй самые прогрессивные способы оптимизации производительности M-кода в Power Query на сотнях тысяч и миллионах строк данных.
13. Оптимизируй код без потери функционала.
14. Пиши код понятно по шагам.
15. Назови шаги понятным образом.
16. Убедись в том, что ты:
а) Ничего не потерял и не забыл из исходного кода.
б) Учёл все перечисленные условия.
✖ Не используем CAPS LOCK и слов "ВАЖНО" во избежание смещения внимания.
✅ Независимо от того, насколько быстро отработал тестовый код, всё равно говорим нейронке:
Код работает очень медленно.
1. Проанализируй все узкие горлышки.
2. Проанализируй код на количество вычислений из «Big O» нотации.
3. Определи места для уменьшения количества вычислений.
4. Используй функции с наименьшим из возможного количества вычислений: O(1), O(log n), O(n), O(n + m), но как можно меньшим из них.
5. Ускорь код для быстрой обработки сотен тысяч строк данных.
6. Ничего не забудь из поставленных задач и исходного функционала.
✅ Так повторяем с разными нейронками, замеряя время выполнения и корректность результатов кода каждой из них.
✅ Через несколько таких итераций получаем высокопроизводительный код, который буквально летает.
Что делать, если код всё ещё не летает —
via @ppc_bigbrain
