Cálculos rápidos
Las expresiones de Power Fx son potentes y realizan muchos cálculos en segundo plano automáticamente. Mientras Power Fx automatiza muchas cosas para usted, es posible ajustar sus cálculos lo más rápido posible.
Recuperación de datos
Usar la selección de columnas explícitas
La característica de selección explícita de columnas (ECS) está habilitada de forma predeterminada para todas las aplicaciones nuevas. Si no está habilitada para su aplicación, debe habilitarla. ECS reduce automáticamente la cantidad de columnas recuperadas a solo las que se utilizan en la aplicación. Si ECS no está habilitada, es posible que esté recuperando más datos de los que necesita, lo que puede afectar el rendimiento. En ocasiones, cuando una aplicación extrae datos a través de colecciones, se puede perder el linaje o el origen de una columna. No sabemos si se está utilizando y lo descartamos usando ECS. Por lo general, puede forzar a ECS a trabajar con una columna faltante usando la expresión PowerFx ShowColumns después de una referencia de colección o usándola en un control.
Utilice imágenes en galerías, tablas y formularios con cuidado.
Use versiones en miniatura de Dataverse de imágenes para galerías y tablas. Las miniaturas de Dataverse son pequeñas, pesan alrededor de 1 kilobyte y se almacenan en línea como parte del registro, y son útiles y rápidas para mostrarlas en controles que muestran colecciones. Todas las demás referencias de imágenes, incluidas todas las imágenes de SharePoint requieren una llamada por separado y no deben colocarse en una galería o tabla. Coloque imágenes que requieran una llamada por separado en formularios detallados. Considere nunca mostrar una imagen completa de forma predeterminada. Las imágenes completamente detalladas pueden ser útiles e importantes para los usuarios. Sin embargo, puede poner estas imágenes a disposición de los usuarios mediante una acción explícita del usuario, por ejemplo, un botón o navegación a una página separada. SharePoint tiene una variedad de imágenes de tamaño intermedio que puede usar en un formulario que no sea la imagen completa. Dataverse solo tiene dos tamaños: Miniatura y Completo.
Cálculos
Dividir fórmulas con App.formula
El uso de App.formulas y fórmulas con nombre puede ayudar con la velocidad de carga de la aplicación y la navegación de la página porque permite que Power Fx decida cuándo evaluar una fórmula. Eso significa que no necesariamente tiene que evaluarlo en OnStart. Además, las fórmulas con nombre generalmente también pueden ayudar a acelerar. En particular, si tiene un script largo, dividirlo en fórmulas con nombre permite realizar cálculos más eficientes, ya que Power Fx puede programar el trabajo y permite la reutilización. Para obtener más información, consulte Fórmulas de aplicaciones.
Usar Concurrent
Utilice la función Concurrent para permitir que las fórmulas se ejecuten al mismo tiempo. Elija con cuidado dónde se utiliza la concurrencia. Puede proporcionar algunas aceleraciones modestas, pero si ejecuta elementos que dependen unos de otros, puede causar problemas de sincronización y aceleración.
Aplazar actualizaciones importantes a un paso de la interfaz de usuario sin bloqueo
Las actualizaciones importantes de origen de datos pueden tardar un poco en completarse. Pero los usuarios esperan que la interfaz de usuario les devuelva el control rápidamente. Las tareas pueden ser secuenciales, donde la actualización debe finalizar antes de que el usuario pueda realizar otras acciones, o asincrónicas (la actualización puede finalizar independientemente de las acciones del usuario).
Un ejemplo de una tarea sincrónica que requiere mucho tiempo es la confirmación de un asiento en un concierto. Para la mayoría de las tareas sincrónicas como esta que consumen mucho tiempo, es común colocar una barra de progreso. Esta interfaz de usuario en realidad bloquea al usuario, pero garantiza que la tarea se complete antes de que se actualicen otros elementos de la interfaz de usuario. Es posible que este enfoque no funcione para su aplicación. Las empresas normalmente manejan pasos secuenciales más largos como un paso comercial explícito. Está aprobado para dar el siguiente paso a través de una señal de proceso empresarial. Un ejemplo es una aprobación. La aprobación puede llegar rápidamente o retrasarse. En la interfaz de usuario puede indicar que el proceso se ha completado de varias maneras. Puede habilitar un botón, mostrar un mensaje, enviar un correo electrónico o habilitar una parte de la interfaz de usuario, como un elemento de menú.
Un ejemplo de tarea asincrónica es la finalización de un pedido. Un cliente actualiza una cesta de pedidos, revisa su pedido y luego realiza el pedido. Pero deben realizarse varias actualizaciones antes de que se le proporcione al cliente una fecha de envío confirmada. En este ejemplo, la fecha de envío no es algo que pueda proporcionar fácilmente de inmediato. , puede diferir esta parte de la actualización a un correo electrónico que se envía al cliente más tarde.
Para tareas sincrónicas, a menudo usará el código en Power Apps para tareas de bloqueo de UI. Por ejemplo, el código espera hasta obtener un valor de retorno y luego suelta la barra de progreso. Lo mejor es minimizar este tipo de situaciones. Pero para las tareas que utilizan un paso empresarial explícito o tareas asincrónicas, es común utilizar un servicio externo para completar la tarea, como una acción de Dataverse, un procedimiento almacenado o un flujo de Power Automate.
Colocar "ForAll" adecuadamente
Si tiene una expresión con ForAll y Collect que se ve así:
ForAll(x, Collect(y, { … }))
Entonces, inviértala a
Collect(y, ForAll(x, { … }))
En el primer patrón, a cualquier regla dependiente de la colección y se le notifican los cambios y se la evalúa para cada iteración de x. En el segundo patrón, estas reglas solo se evalúan una vez.
Considere evitar referencias a Gallery.AllItems
Al trabajar con Power Apps, es mejor evitar hacer referencia a Gallery.AllItems a menos que necesite valores de usuario. Esto se debe a que cada vez que se lee AllItems, se genera una nueva tabla de salida. En su lugar, utilice Gallery.AllItemsCount si solo desea saber cuántos elementos están cargados.
Utilice con cuidado Gallery.TemplateSize
Para garantizar que las galerías de altura flexible se representen correctamente, es importante establecer un tamaño predeterminado razonable. Inicialmente, intentamos representar tantas filas como sea posible en función de este valor. Si establece el tamaño predeterminado en 0, intentamos renderizar todo, excepto algunos casos extremos. Si está utilizando una fórmula, asegúrese de establecer un valor mínimo para cuando la fórmula pueda evaluarse como 0. Por ejemplo, podrías usar Max (20, varFoo + rectBar.Height). De esta manera, si varFoo y rectBar.Height aún no están disponibles, al menos usamos un valor razonable de 20.
Fíjese en DelayOutput para búsqueda
Hay un segundo de retraso antes de que se detecten los cambios, lo que le permite completar la escritura en lugar de detectar los cambios cada vez que escribe.