优化逻辑的建议

适用于此 Power Platform Well-Architected 性能效率检查表建议:

PE:06 使用高性能的 logic,并确保它将责任分担给平台。 仅将 logic 用于其预期目的,并且仅在必要时使用。

本指南介绍了优化代码和基础设施性能的建议。 要优化您的代码和基础设施,您应该仅将组件用于其核心目的,并且仅在需要时使用。 当您过度使用代码和基础设施时,会产生不必要的资源消耗、瓶颈和响应缓慢。 为了补偿这些低效率,您必须添加更多资源来完成相同的任务。

定义

术语 定义
并发性 一次执行多个任务或流程,但不一定同时执行。
排比 当同时执行多个任务或流程时。

关键设计策略

优化 logic 和 infrastructure 需要微调 logic 和支持 infrastructure 以提高性能效率。 它需要能够快速执行任务且不浪费资源的高性能逻辑。 它需要一个设计良好的基础设施,该基础设施经过简化以避免不必要的复杂性。 工作负载应使用平台的固有功能。 这种方法有助于确保 logic 和 infrastructure 主要用于其核心目的,并且仅在需要时使用。

优化逻辑性能

要优化逻辑性能,请修改代码以减少资源使用、最小化运行时并提高性能。 您可以修改逻辑以提高应用程序或流程的效率和速度。 不要用暴力破解来掩盖性能问题。 暴力破解意味着添加计算资源来补偿代码性能,例如添加额外的容量而不是寻址源。 您需要通过优化来修复性能问题。 当您优化逻辑性能时,它有助于最大限度地提高系统资源的利用率、缩短回复时间、减少延迟并增强用户体验。

检测您的逻辑

Instrumenting logic 是指在运行时添加自定义事件日志记录以收集数据和监控 logic 性能的做法。 Logic Instrumentation 允许开发人员收集有关关键指标(如执行时间)的信息。 通过插桩逻辑,开发人员可以深入了解逻辑热路径,识别性能瓶颈,并优化逻辑以提高性能效率。

理想情况下,您应该在软件开发生命周期的早期执行 logic analysis。 您越早发现逻辑问题,修复成本就越低。 您希望尽可能多地自动化此 logic analysis。 使用动态和静态代码分析工具来减少手动工作。 例如, Flow Checker 可以突出显示预期不会执行的逻辑,例如未指定筛选条件的查询。 但是,请记住,此测试仍然是对 production 的模拟。 Production 提供了对 Logic 优化的最清晰的理解。

权衡:逻辑监控工具可能会增加成本。

识别热路径

通过检测 logic,您可以测量不同 logic paths 的资源消耗。 这些测量可帮助您识别热路径。 热路径对性能和资源使用有重大影响。 它们是程序中需要高性能和低延迟的关键或频繁执行的部分。

要识别代码热路径,请考虑以下步骤:

  • Analyze runtime data:收集运行时数据并对其进行分析,以识别消耗运行时间最多的 logic 区域。 查找经常执行或需要很长时间才能完成的模式或逻辑部分。

  • 性能测量:使用分析工具或性能测试框架来测量不同 logic path 的执行时间和资源消耗。 此过程有助于识别瓶颈和需要改进的领域。 例如,您可以使用 Monitor in Power Apps 更好地了解应用程序的事件和公式的工作原理,从而提高性能。

  • 考虑业务逻辑和用户效果:根据不同逻辑路径与应用程序功能或关键业务操作的相关性,评估它们的重要性。 确定哪些 logic paths 对于向用户提供价值或满足性能要求至关重要。

优化逻辑

优化 logic 就是改进 logic 的结构和设计,以更少的资源执行任务。 改进的逻辑减少了不必要的操作。 它以更少的资源消耗创建更快的执行速度。 您应该删除 logic path 中可能影响性能的任何不必要操作。 优先优化热路径,以获得最大的性能效率提升。

要优化逻辑,请考虑以下策略:

  • 删除不必要的函数调用:检查您的逻辑并识别任何对于所需功能不是必需的函数,这些函数可能会对性能产生负面影响。 例如,如果函数调用执行在代码中较早完成的验证,则可以删除不必要的验证函数调用。

  • 最大限度地减少日志记录操作:日志记录有助于调试和分析,但过多的日志记录会影响性能。 评估每个日志记录操作的必要性,并删除任何对性能分析不重要的不必要的日志记录调用。 一个好的做法是允许系统打开和关闭日志记录,以帮助调试,同时不会导致生产性能问题。

  • 优化循环和条件语句:分析逻辑中的循环和条件语句,并确定可以消除的任何不必要的迭代或条件。 简化和优化这些结构可以提高代码的性能。 最大限度地减少循环中的函数调用,并消除冗余计算。 考虑将计算移出循环。

  • 减少不必要的数据处理:检查您的逻辑中是否存在任何不必要的数据处理操作,例如冗余计算或转换。 消除这些不必要的操作以提高逻辑的效率。 例如,使用 Dataverse 计算列、汇总字段Power Fx 列 ,而不是在代码中计算值并通过保存操作存储它。

  • 优化数据结构。 要有效地存储和检索数据,请选择适当的数据结构,并且仅选择所需的数据列。 为特定问题选择最佳数据结构。 合适的数据结构可以提高应用程序性能。

  • 最大限度地减少网络请求:如果您的逻辑涉及发出网络请求(例如,使用连接器操作),请最大限度地减少请求数量并优化其使用。 尽可能批量请求,避免不必要的往返以提高性能。

  • 减小数据结构大小:查看数据要求并消除任何不必要的字段或属性。 通过选择适当的数据类型并有效地打包数据来优化内存使用。

  • 异步工作:评估是否可以在逻辑中异步而不是同步完成工作。 例如,请考虑实现一个 Power Automate 流来异步处理工作,而不是内联执行操作。

  • 在自定义之前进行配置。 如果可以,请使用标准应用程序组件。 插件和 JavaScript 等自定义项可能会影响性能。

  • 最小化控制。 仅显示表单中所需的字段 - 字段过多会使用户界面混乱并影响性能。 尽量减少命令栏、画布应用或自定义页面中的控件数量。 避免嵌套库或向库添加过多组件。

  • 优化数据查询。 仅加载应用程序或流中所需的数据。 使用服务器端视图对数据进行预筛选,以缩小与查询相关的数据范围。

查看特定于 Power Platform 您正在使用的产品的性能建议。 根据这些建议评估您的逻辑,以确定需要改进的领域。

权衡:优化 logic 和 hot paths 需要专业知识。 识别逻辑效率低下是主观的,可能需要高技能的人员,您可能需要从其他任务中提取他们。

使用并发和并行

使用并发和并行涉及同时或以重叠方式执行多个任务或进程,以有效利用计算资源。 这些技术可以提高工作负载可以处理的总体吞吐量和任务数。 当您并发或并行运行任务时,它可以缩短应用程序的运行时间并增加回复时间。

并发和并行性有效地在计算资源之间分配工作负载。 在增加并发性或并行度时,请考虑对其他系统的影响,因为您可能会超出其限制。 例如,一次处理每个项目的流中的 Power Automate 并发循环可能会超过循环逻辑中使用的连接器的请求限制。

使用并行度。 并行性是系统在多个计算资源上同时扳机键多个任务或进程的能力。 并行性将工作负载划分为并行运行的缩小任务。 当您并行运行逻辑时,性能会提高,因为工作负载分布在多个分支中。

使用并发。 并发是系统运行多个任务或进程的能力。 并发使工作负载的不同部分能够独立取得进展,从而提高整体性能。

  • 并发执行:并发执行允许相同的逻辑同时运行。 将并发执行限制为 1 可能会产生序列化逻辑的效果,从而导致一次处理一个项目。 控制工作负载项的并发执行量有助于管理处理期间的资源使用情况。 例如, Power Automate 可以使用 Concurrent Control 属性将流循环配置为并行处理多个操作。

    备注

    在启用并发之前,请记住,这意味着将同时执行多个操作—如果您在循环中写入数据,请确保数据的目标可以处理同时发生的请求。

  • 队列:队列是位于工作负载的请求组件(生产者)和处理组件(使用者)之间的存储缓冲区。 单个队列可以有多个使用者。 随着任务的增加,您应该扩展使用者以满足需求。 创建者将任务放入队列中。 队列会存储任务,直到使用者有容量为止。 队列通常是将工作移交给需求高峰的处理服务的最佳方式。 有关详细信息,请参阅 基于队列的负载调节模式 和存储 队列和服务总线队列

优化后台作业

许多应用程序需要独立于用户界面运行的后台任务。 应用程序可以启动作业并继续处理来自用户的交互式请求。 后台作业的示例包括批处理作业、处理器密集型任务和长时间运行的进程,例如工作流。 当系统处于负载状态时,后台任务不应阻止应用程序或由于延迟操作而导致不一致。 有关优化后台作业的更多信息,请参阅 开发后台作业的建议。

Power Platform 便利化

检测代码:在构建画布应用程序时,应使用高性能模式来提高应用程序效率,同时应避免使用反模式。 有关更多信息,请参阅 创建 performant Power Apps 概述。 使用 Monitor in Power Apps 在开发过程中诊断和排查性能问题。

衡量参与度和结果:在构建 Copilot 时,跟踪 对话参与度结果 对于衡量 Copilot 绩效指标和发现需要改进的领域至关重要。

优化代码逻辑:借助 解决方案检查器 功能,您可以根据一组最佳实践规则对解决方案执行丰富的静态分析检查,并快速识别有问题的模式。 使用 Flow Checker,您可以深入了解 Flow 实施的哪些方面会带来性能风险?

使用并发和并行: Power Automate 云端流支持循环和触发器中的并发。 请注意, 并发、循环和取消批处理限制 适用,并且基于您的性能配置文件。 Power Apps 支持使用 Concurrent 函数进行 并发。

优化 Dataverse 性能: Microsoft Dataverse 提供可扩展的框架,允许开发人员构建高度自定义和定制的体验。 在自定义、扩展或集成 Dataverse时,请注意已建立的指南和最佳实践。 请参阅使用 Microsoft Dataverse 时的最佳实践和指南

性能效率清单

请参考整套建议。