Поделиться через


Рекомендации по оптимизации логики

Применимо к этой рекомендации Power Platform контрольного списка эффективности хорошо продуманной производительности:

РЕ:06 Используйте эффективную логику и убедитесь, что она перекладывает часть ответственности на платформу. Используйте логику только по назначению и только при необходимости.

В этом руководстве описаны рекомендации по оптимизации производительности кода и инфраструктуры. Чтобы оптимизировать код и инфраструктуру, следует использовать компоненты только по их основному назначению и только при необходимости. Чрезмерное использование кода и инфраструктуры приводит к ненужному потреблению ресурсов, появлению узких мест и замедлению реакции. Чтобы компенсировать эту неэффективность, необходимо добавить больше ресурсов для выполнения тех же задач.

Определения

Термин Определение
Параллелизм Когда несколько задач или процессов выполняются одновременно, но не обязательно в одно и то же время.
Параллелизм Когда одновременно выполняется несколько задач или процессов.

Ключевые стратегии проектирования

Оптимизация логики и инфраструктуры подразумевает тонкую настройку логики и поддерживающей инфраструктуры для повышения эффективности работы. Для этого требуется производительная логика, которая быстро выполняет задачи и не расходует ресурсы впустую. Для этого требуется хорошо спроектированная и оптимизированная инфраструктура, позволяющая избежать ненужной сложности. Рабочая нагрузка должна использовать внутренние возможности платформы. Такой подход помогает гарантировать, что и логика, и инфраструктура используются в первую очередь для своих основных целей и только при необходимости.

Оптимизация производительности логики

Чтобы оптимизировать производительность логики, измените код, чтобы сократить использование ресурсов, минимизировать время выполнения и повысить производительность. Вы можете изменить логику, чтобы повысить эффективность и скорость приложения или потока. Не маскируйте проблемы с производительностью с помощью грубой силы. Грубая сила означает добавление вычислительных ресурсов для компенсации производительности кода, например, добавление дополнительной емкости вместо обращения к источнику. Вам необходимо устранить проблемы с производительностью с помощью оптимизации. Оптимизация производительности логики помогает максимально эффективно использовать системные ресурсы, сокращает время ответ, сокращает задержки и улучшает взаимодействие с пользователем.

Инструментируйте свою логику

Инструментирование логики относится к практике добавления пользовательской регистрации событий для сбора данных и мониторинга производительности логики во время выполнения. Логическое инструментирование позволяет разработчикам собирать информацию о ключевых показателях, таких как время выполнения. Инструментируя логику, разработчики могут получить представление о горячих путях логики, выявить узкие места производительности и оптимизировать логику для повышения эффективности работы.

В идеале логический анализ следует проводить на ранних этапах жизненного цикла разработки программного обеспечения. Чем раньше вы обнаружите логическую проблему, тем дешевле ее исправить. Вам необходимо автоматизировать как можно большую часть этого логического анализа. Используйте инструменты динамического и статического анализа кода для сокращения ручного труда. Например, Flow Checker может выделить логику, которая не должна быть эффективной, например запрос, в котором не указаны критерии фильтрации. Однако следует помнить, что данное тестирование по-прежнему является имитацией производства. Производство дает наиболее четкое понимание оптимизации логики.

Компромисс: Инструменты логического мониторинга, вероятно, увеличат затраты.

Определите горячие пути

Инструментируя свою логику, вы можете измерить потребление ресурсов для различных логических путей. Эти измерения помогут вам определить горячие пути. Горячие пути оказывают существенное влияние на производительность и использование ресурсов. Это критически важные или часто выполняемые разделы программы, требующие высокой производительности и малой задержки.

Чтобы определить проблемные участки кода, рассмотрите следующие шаги:

  • Анализ данных времени выполнения: сбор данных времени выполнения и их анализ для выявления областей логики, которые потребляют больше всего затраченного времени. Ищите шаблоны или разделы логики, которые часто выполняются или требуют много времени для выполнения.

  • Измерение производительности: используйте инструменты профилирования или фреймворки тестирования производительности для измерения времени выполнения и потребления ресурсов различных логических путей. Этот процесс помогает выявить узкие места и области, требующие улучшения. Например, вы можете использовать Monitor в Power Apps , чтобы лучше понять, как работают события и формулы вашего приложения, и тем самым повысить производительность.

  • Учитывайте бизнес-логику и влияние на пользователя: оцените важность различных логических путей на основе их релевантности для функциональности приложения или критически важных бизнес-операций. Определите, какие логические пути имеют решающее значение для предоставления ценности пользователям или для удовлетворения требований к производительности.

Оптимизировать логику

Оптимизация логики заключается в совершенствовании структуры и дизайна логики для выполнения задач с меньшими затратами ресурсов. Улучшенная логика сокращает количество ненужных операций. Это обеспечивает более быстрое выполнение при меньшем потреблении ресурсов. Вам следует удалить все ненужные операции в логическом пути, которые могут повлиять на производительность. Отдайте приоритет оптимизации «горячих путей», чтобы добиться наибольшего повышения эффективности работы.

Для оптимизации логики рассмотрите следующие стратегии:

  • Удалить ненужные вызовы функций : Пересмотрите свою логику и определите любые функции, которые не являются необходимыми для желаемой функциональности и могут отрицательно повлиять на производительность. Например, если вызов функции выполняет проверку, выполненную ранее в коде, вы можете удалить ненужный вызов функции проверки.

  • Минимизировать лесозаготовительные операции : Ведение журнала может быть полезно для отладки и анализа, но чрезмерное ведение журнала может повлиять на производительность. Оцените необходимость каждой операции регистрации и удалите все ненужные вызовы регистрации, которые не имеют решающего значения для анализа производительности. Хорошей практикой будет разрешить вашей системе включать и выключать ведение журнала, чтобы облегчить отладку, не вызывая при этом проблем с производительностью.

  • Оптимизируйте циклы и условные операторы : Проанализируйте циклы и условные операторы в вашей логике и определите любые ненужные итерации или условия, которые можно исключить. Упрощение и оптимизация этих структур может повысить производительность вашего кода. Минимизируйте вызовы функций внутри циклов и исключите избыточные вычисления. Рассмотрите возможность вынесения вычислений за пределы цикла.

  • Сократите ненужную обработку данных : Проверьте свою логику на наличие ненужных операций обработки данных, таких как избыточные вычисления или преобразования. Устраните эти ненужные операции, чтобы повысить эффективность вашей логики. Например, используйте Dataverse вычисляемые столбцы, поля свертки или Power Fx столбцы вместо того, чтобы вычислять значение в коде и сохранять его с помощью операции сохранения.

  • Оптимизируйте структуры данных. Для эффективного хранения и извлечения данных выбирайте соответствующие структуры данных и только необходимые столбцы данных. Выберите наилучшую структуру данных для конкретной проблемы. Подходящая структура данных повышает производительность приложения.

  • Минимизируйте сетевые запросы: если ваша логика подразумевает выполнение сетевых запросов (например, с использованием действия коннектора), минимизируйте количество запросов и оптимизируйте их использование. По возможности выполняйте пакетные запросы и избегайте ненужных циклов передачи данных для повышения производительности.

  • Уменьшите размер структуры данных: просмотрите требования к данным и удалите все ненужные поля или свойства. Оптимизируйте использование памяти, выбрав соответствующие типы данных и эффективно упаковав данные.

  • Выполняйте работу асинхронно: оцените, можно ли в вашей логике выполнять работу асинхронно, а не синхронно. Например, вместо выполнения операции в строке рассмотрите возможность реализации Power Automate потока для асинхронной обработки работы.

  • Настройте перед настройкой. По возможности используйте стандартные компоненты приложения. Такие настройки, как плагины и JavaScript, могут повлиять на производительность.

  • Минимизируйте контроль. Отображайте в формах только те поля, которые вам нужны — слишком большое количество полей может загромождать пользовательский интерфейс и влиять на производительность. Минимизируйте количество элементов управления на панели команд, в приложении Canvas или на пользовательской странице. Избегайте вложенности галерей или добавления слишком большого количества компонентов в галерею.

  • Оптимизируйте запросы данных. Загружайте в приложение или поток только те данные, которые вам нужны. Используйте представления на стороне сервера для предварительной фильтрации данных, чтобы сузить круг данных, релевантных вашему запросу.

Ознакомьтесь с рекомендациями по производительности, специфичными для Power Platform продукта, с которым вы работаете. Оцените свою логику по этим рекомендациям, чтобы определить области для улучшения.

Компромисс: Оптимизация логики и горячих путей требует опыта. Выявление неэффективности логики является субъективным и может потребовать привлечения высококвалифицированных специалистов, которых вам, возможно, придется отстранить от выполнения других задач.

Используйте параллелизм и параллельность

Использование параллелизма и конкуренции подразумевает выполнение нескольких задач или процессов одновременно или с перекрытием для эффективного использования вычислительных ресурсов. Эти методы увеличивают общую производительность и количество задач, которые может обработать рабочая нагрузка. При одновременном или параллельном запуске задач может сократиться время выполнения приложения и увеличиться время ответ.

Параллелизм и параллельность эффективно распределяют рабочую нагрузку между вычислительными ресурсами. При увеличении параллелизма или конкуренции учитывайте влияние на другие системы, поскольку вы можете превысить их ограничения. Например, параллельный цикл в потоке, обрабатывающем каждый элемент за раз, может превысить ограничения запросов коннектора, используемого в логике цикла. Power Automate

Используйте параллелизм. Параллелизм — это способность системы одновременно запускать несколько задач или процессов на нескольких вычислительных ресурсах. Параллелизм разделяет рабочую нагрузку на более мелкие задачи, которые выполняются параллельно. При параллельном выполнении логики производительность повышается, поскольку рабочая нагрузка распределяется по нескольким ветвям.

Используйте параллелизм. Параллелизм — это способность системы выполнять несколько задач или процессов. Параллелизм позволяет различным частям рабочей нагрузки выполняться независимо, что может повысить общую производительность.

  • Параллельное выполнение: Параллельное выполнение позволяет выполнять одну и ту же логику одновременно. Ограничение одновременного выполнения до одного может привести к сериализации логики, что приведет к обработке одного элемента за раз. Контроль количества одновременно выполняемых элементов рабочей нагрузки может помочь управлять использованием ресурсов во время обработки. Например, Power Automate циклы потока можно настроить для параллельной обработки нескольких действий с помощью свойства Concurrent Control.

    Заметка

    Прежде чем включить параллелизм, помните, что это означает, что одновременно будет выполняться несколько действий. Если вы записываете данные в рамках цикла, убедитесь, что место назначения данных может обрабатывать одновременные запросы.

  • Очереди: Очередь — это буфер хранения, расположенный между запрашивающим компонентом (производителем) и обрабатывающим компонентом (потребителем) рабочей нагрузки. У одной очереди может быть несколько потребителей. По мере увеличения задач вам следует масштабировать потребителей для удовлетворения спроса. Производитель помещает задачи в очередь. Очередь хранит задачи до тех пор, пока у потребителя не появится достаточно места. Очередь часто является наилучшим способом передачи работы службе обработки, которая испытывает пиковый спрос. Для получения дополнительной информации см. разделы Шаблон выравнивания нагрузки на основе очередей и Очереди хранения и очереди служебной шины.

Оптимизируйте фоновые задания

Многим приложениям требуются фоновые задачи, которые выполняются независимо от пользовательского интерфейса. Приложение может начать работу и продолжить обработку интерактивных запросов пользователей. Примерами фоновых заданий являются пакетные задания, задачи, интенсивно использующие процессор, и длительные процессы, такие как рабочие процессы. Фоновые задачи не должны блокировать работу приложения или вызывать несоответствия из-за задержки работы, когда система находится под нагрузкой. Дополнительную информацию об оптимизации фоновых заданий см. Рекомендации по разработке фоновых заданий.

Возможности в Power Platform

Код инструментария : При создании приложений на основе холста следует использовать эффективные шаблоны для повышения эффективности приложения, а антишаблонов следует избегать. Для получения более подробной информации см. Обзор создания производительного Power Apps. Использовать Монитор в Power Apps для диагностики и устранения проблем производительности в процессе разработки.

Измерение вовлеченности и результатов : При построении вторых пилотов, отслеживание разговор вовлеченность и результаты необходим для измерения показателей эффективности работы второго пилота и выявления областей, требующих улучшения.

Оптимизация логики кода: с помощью функции проверки решений вы можете выполнить комплексный статический анализ своих решений на основе набора правил передовой практики и быстро выявить проблемные шаблоны. С помощью Flow Checker вы можете получить представление о том, какие области реализации вашего потока представляют риск для производительности?

Использование параллелизма и многопоточности: Power Automate облачные потоки поддерживают многопоточность в циклах и триггерах. Обратите внимание, что применяются ограничения на параллелизм, цикличность и депакетирование , которые основаны на вашем профиле производительности. Power Apps поддержка параллелизма с использованием функции Concurrent .

Оптимизация Dataverse производительности: Microsoft Dataverse предоставляет расширяемую структуру, позволяющую разработчикам создавать высоконастраиваемые и индивидуальные решения. При настройке, расширении или интеграции с Dataverse учитывайте установленные рекомендации и передовой опыт. См. раздел Рекомендации и инструкции при использовании Microsoft Dataverse.

Контрольный список по обеспечению эффективности процессов

Обратитесь к полному набору рекомендаций.