Рекомендации по оптимизации логики
Применяется к следующей рекомендации контрольного списка по обеспечению эффективности процессов Power Platform Well-Architected:
PE:06 | Используйте производительную логику и убедитесь, что она перекладывает ответственность на платформу. Используйте логику только по прямому назначению и только при необходимости. |
---|
В этом руководстве описаны рекомендации по оптимизации производительности кода и инфраструктуры. Чтобы оптимизировать код и инфраструктуру, компоненты следует использовать только по назначению и только тогда, когда это необходимо. Чрезмерное использование кода и инфраструктуры приводит к ненужному потреблению ресурсов, возникновению узких мест и медленному отклику. Чтобы компенсировать эту неэффективность, необходимо добавить дополнительные ресурсы для выполнения тех же задач.
Определения
Термин | Определение |
---|---|
Параллелизм | Когда несколько задач или процессов выполняются одновременно, но не обязательно в одно и то же время. |
Параллелизм | Когда несколько задач или процессов выполняются одновременно. |
Ключевые стратегии проектирования
Оптимизация логики и инфраструктуры влечет за собой тонкую настройку логики и поддерживающей инфраструктуры для повышения эффективности работы. Для этого требуется высокопроизводительная логика, которая быстро выполняет задачи и не тратит ресурсы впустую. Для этого требуется хорошо спроектированная инфраструктура, оптимизированная для избежания ненужных сложностей. Рабочая нагрузка должна использовать возможности, присущие платформе. Такой подход позволяет гарантировать, что и логика, и инфраструктура используются в первую очередь по их основным целям и только при необходимости.
Оптимизация производительности логики
Чтобы оптимизировать производительность логики, измените код, чтобы уменьшить использование ресурсов, свести к минимуму время выполнения и повысить производительность. Вы можете изменить логику, чтобы повысить эффективность и скорость работы приложения или потока. Не маскируйте проблемы с производительностью с помощью грубой силы. Грубая сила означает добавление вычислительных ресурсов для компенсации производительности кода, например, добавление дополнительной емкости вместо обращения к источнику. Необходимо устранить проблемы с производительностью с помощью оптимизации. Оптимизация производительности логики помогает максимально эффективно использовать системные ресурсы, сокращает время отклика, снижает задержку и улучшает взаимодействие с пользователем.
Инструментирование логики
Логика инструментирования — это добавление пользовательского журнала событий для сбора данных и мониторинга производительности логики во время выполнения. Логическое инструментирование позволяет разработчикам собирать информацию о ключевых метриках, таких как время выполнения. Инструментируя логику, разработчики могут получать аналитические сведения о горячих путях логики, выявлять узкие места производительности и оптимизировать логику для повышения эффективности производительности.
В идеале логический анализ следует выполнять на ранних этапах жизненного цикла разработки программного обеспечения. Чем раньше вы обнаружите логическую проблему, тем дешевле ее устранить. Вы хотите автоматизировать как можно большую часть этого логического анализа. Используйте инструменты динамического и статического анализа кода, чтобы сократить объем ручного труда. Например, Средство проверки потоков может выделить логику, которая, как ожидается, не будет эффективной, например запрос, в котором не указаны критерии фильтра. Однако имейте в виду, что это тестирование по-прежнему является симуляцией рабочей среды. Рабочая среда обеспечивает наиболее четкое понимание оптимизации логики.
Компромисс: инструменты логического мониторинга, скорее всего, увеличат затраты.
Идентификация часто используемых путей
Инструментируя логику, можно измерить потребление ресурсов для различных логических путей. Эти измерения помогают идентифицировать горячие пути. Горячие пути оказывают значительное влияние на производительность и использование ресурсов. Это критически важные или часто выполняемые разделы программы, требующие высокой производительности и низкой задержки.
Чтобы определить горячие пути кода, выполните следующие действия.
Анализ данных среды выполнения: сбор данных среды выполнения и их анализ для определения областей логики, которые потребляют больше всего затраченного времени. Ищите шаблоны или разделы логики, которые часто выполняются или требуют много времени для завершения.
Измерение производительности: используйте средства профилирования или платформы тестирования производительности для измерения времени выполнения и потребления ресурсов различными логическими путями. Этот процесс помогает выявить узкие места и области, требующие улучшения. Например, можно использовать Монитор в Power Apps, чтобы получить лучшее понимание того, как работают события и формулы, содержащиеся в вашем приложении, чтобы вы могли повысить производительность.
Учитывайте бизнес-логику и влияние пользователя: оцените важность различных логических путей на основе их релевантности для функциональности приложения или критически важных бизнес-операций. Определите, какие логические пути имеют решающее значение для обеспечения ценности для пользователей или для удовлетворения требований к производительности.
Оптимизация логики
Оптимизация логики заключается в уточнении структуры и проектирования логики для выполнения задач с меньшим количеством ресурсов. Улучшенная логика сокращает количество ненужных операций. Это обеспечивает более быстрое выполнение с меньшим потреблением ресурсов. Следует удалить все ненужные операции в логическом пути, которые могут повлиять на производительность. Расставьте приоритеты при оптимизации горячих путей, чтобы добиться максимального повышения производительности.
Для оптимизации логики рассмотрим следующие стратегии:
Удалите ненужные вызовы функций: просмотрите логику и определите все функции, которые не являются существенными для желаемой функциональности и могут отрицательно повлиять на производительность. Например, если вызов функции выполняет проверку, выполненную ранее в коде, можно удалить ненужный вызов функции проверки.
Сведение к минимуму операций журналирования: ведение журнала может быть полезно для отладки и анализа, но чрезмерное ведение журнала может повлиять на производительность. Оцените необходимость каждой операции ведения журнала и удалите все ненужные вызовы журнала, которые не являются критичными для анализа производительности. Рекомендуется разрешить системе включать и выключать ведение журнала, чтобы помочь в отладке, не вызывая проблем с производительностью в рабочей среде.
Оптимизация циклов и условных выражений: проанализируйте циклы и условные выражения в логике и выявите ненужные итерации или условия, которые можно устранить. Упрощение и оптимизация этих структур может повысить производительность кода. Сведите к минимуму вызовы функций в циклах и избавьтесь от избыточных вычислений. Подумайте о том, чтобы вынести вычисления за пределы цикла.
Сократите ненужную обработку данных: проверьте логику на наличие ненужных операций обработки данных, таких как избыточные вычисления или преобразования. Устраните эти ненужные операции, чтобы повысить эффективность вашей логики. Например, используйте вычисляемые столбцы Dataverse, поля свертки или столбцы Power Fx вместо вычисления значения в коде и сохранения его с помощью операции сохранения.
Оптимизируйте структуры данных. Для эффективного хранения и извлечения данных выбирайте соответствующие структуры данных и только необходимые столбцы данных. Выберите оптимальную структуру данных для конкретной проблемы. Подходящая структура данных повышает производительность приложения.
Минимизация сетевых запросов: если ваша логика предполагает выполнение сетевых запросов (например, с помощью действия соединителя), минимизируйте количество запросов и оптимизируйте их использование. По возможности выполняйте пакетные запросы и избегайте ненужных циклов приема-передачи для повышения производительности.
Уменьшите размер структуры данных: просмотрите требования к данным и исключите все ненужные поля или свойства. Оптимизируйте использование памяти, выбирая подходящие типы данных и эффективно упаковывая данные.
Выполняйте работу асинхронно: оцените, может ли работа выполняться в вашей логике асинхронно, а не синхронно. Например, вместо того, чтобы выполнять операцию в строке, рассмотрите возможность реализации потока Power Automate для асинхронной обработки работы.
Конфигурируйте перед настройкой. По возможности используйте стандартные компоненты приложения. Настройки, такие как подключаемые модули и JavaScript, могут повлиять на производительность.
Сведите к минимуму количество элементов управления. Отображайте в формах только те поля, которые вам нужны — слишком большое количество полей может загромождать пользовательский интерфейс и повлиять на производительность. Сведите к минимуму количество элементов управления на панели команд, в приложении на основе холста или на пользовательской странице. Избегайте вложения галерей или добавления слишком большого количества компонентов в галерею.
Оптимизируйте запросы данных. Загружайте в приложение или поток только те данные, которые вам нужны. Используйте представления на стороне сервера для предварительной фильтрации данных, чтобы сузить круг данных, относящихся к вашему запросу.
Ознакомьтесь с рекомендациями по производительности, относящимися к конкретному продукту Power Platform, с которым вы работаете. Оцените свою логику в соответствии с этими рекомендациями, чтобы определить области, требующие улучшения.
Компромисс: оптимизация логики и самых часто используемых путей требует опыта. Выявление неэффективности логики является субъективным и может потребовать высококвалифицированных специалистов, которых вам, возможно, придется отвлечь от других задач.
Использование одновременного выполнения и параллелизма
Использование одновременного выполнения и параллелизма предполагает выполнение нескольких задач или процессов либо одновременно, либо перекрывающимся образом для эффективного использования вычислительных ресурсов. Эти методики увеличивают общую пропускную способность и количество задач, которые может обрабатывать рабочая нагрузка. При одновременном или параллельном выполнении задач это может сократить время выполнения приложения и увеличить скорость отклика.
Одновременное выполнение и параллелизм эффективно распределяют рабочую нагрузку между вычислительными ресурсами. При увеличении одновременного выполнения или параллелизма учитывайте влияние на другие системы, так как вы можете превысить их пределы. Например, одновременный цикл в потоке Power Automate, обрабатывающий каждый элемент за раз, может превысить ограничения запросов соединителя, используемого в логике цикла.
Используйте параллелизм. Параллелизм — это способность системы одновременно запускать несколько задач или процессов на нескольких вычислительных ресурсах. Параллелизм делит рабочую нагрузку на более мелкие задачи, которые выполняются параллельно. При параллельном выполнении логики производительность повышается, так как рабочая нагрузка распределяется между несколькими ветвями.
Используйте одновременное выполнение. Одновременное выполнение — это способность системы выполнять несколько задач или процессов. Одновременное выполнение позволяет различным частям рабочей нагрузки выполнять работу независимо друг от друга, что может повысить общую производительность.
Одновременное выполнение: одновременное выполнение позволяет выполнять одну и ту же логику одновременно. Ограничение одновременного выполнения до одного может привести к сериализации логики, что приведет к обработке одного элемента за раз. Контроль количества одновременных выполнений элементов рабочей нагрузки может помочь управлять использованием ресурсов во время обработки. Например, циклы потока Power Automate можно настроить для параллельной обработки нескольких действий с помощью свойства контроля одновременного выполнения.
Заметка
Прежде чем включить параллелизм, имейте в виду, что это означает, что несколько действий будут выполняться одновременно — если вы записываете данные в рамках цикла, убедитесь, что место назначения данных может обрабатывать одновременные запросы.
Очереди: очередь — это буфер хранилища, расположенный между запрашивающим компонентом (производителем) и компонентом обработки (потребителем) рабочей нагрузки. В одной очереди может быть несколько потребителей. По мере увеличения количества задач следует масштабировать потребителей в соответствии со спросом. Продюсер помещает задачи в очередь. В очереди задачи хранятся до тех пор, пока у потребителя не появится емкость. Очередь часто является лучшим способом передать работу службе обработки, которая испытывает пиковый спрос. Дополнительные сведения см. в разделах Шаблон равномерного распределения нагрузки на основе очередей и Очереди хранилища и очереди служебной шины.
Оптимизация фоновых заданий
Для многих приложений требуются фоновые задачи, выполняющиеся независимо от пользовательского интерфейса. Приложение может запустить задание и продолжить обработку интерактивных запросов от пользователей. Примерами фоновых заданий являются пакетные задания, задачи, интенсивно использующие процессор, и длительные процессы, такие как рабочие процессы. Фоновые задачи не должны блокировать работу приложения или вызывать несогласованность из-за задержки работы при нагрузке системы. Дополнительные сведения об оптимизации фоновых заданий см. в разделе Рекомендации по разработке фоновых заданий.
Возможности в Power Platform
Инструментирование кода: при создании приложений на основе холста следует использовать шаблоны производительности для повышения эффективности приложений, в то время как антишаблонов следует избегать. Подробные сведения см. в разделе Обзор создания производительных приложений Power Apps. Используйте Монитор в Power Apps для диагностики и устранения проблем с производительностью во время разработки.
Измеряйте вовлеченность и результаты: при создании агентов отслеживание вовлеченности в разговор и результатов имеет важное значение для измерения показателей эффективности агента и выявления областей, требующих улучшения.
Оптимизация логики кода: с функцией проверки решения можно выполнить проверку решений с широким статическим анализом ваших решений по набору правил оптимальной работы и быстро выявить проблемные закономерности. С помощью средства проверки потоков вы можете получить аналитические сведения о том, какие области реализации вашего потока представляют риск для производительности.
Использование одновременного выполнения и параллелизма: облачные потоки Power Automate поддерживают параллелизм в циклах и триггерах. Обратите внимание, что ограничения параллелизма, циклов и разгруппирования применяются и зависят от профиля производительности. Power Apps поддерживает параллелизм с помощью функции Concurrent.
Оптимизация производительности Dataverse: Microsoft Dataverse обеспечивает расширяемую платформу, которая позволяет разработчикам создавать хорошо настраиваемые специализированные взаимодействия. При настройке, расширении или интеграции с Dataverse помните об установленных рекомендациях и лучших практиках. См. раздел Рекомендации и инструкции при использовании Microsoft Dataverse.
Дополнительные сведения
- Ограничения параллелизма, цикличности и разгруппирования в Power Automate
- Рекомендации по оптимизации производительности Dynamics 365 для конкретного продукта
- Настройка и оптимизация производительности приложений для взаимодействия с клиентами
- Обзор создания высокопроизводительных приложений Power Apps
- Обзор монитора
- Повышение производительности, стабильности и надежности компонентов с помощью средства проверки решений
Контрольный список по обеспечению эффективности процессов
Обратитесь к полному набору рекомендаций.