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


Швидкі обчислення

Power Fx Вирази є потужними і автоматично виконують багато фонових обчислень. Незважаючи на те, що Power Fx багато речей автоматизуються для вас, ви можете точно налаштувати свої розрахунки якомога швидше.

Отримання даних

Використання явного вибору стовпця

Функція явного вибору стовпця (ECS) увімкнена за замовчуванням для всіх нових програм. Якщо цю функцію не ввімкнено для вашого додатка, її слід увімкнути. ECS автоматично зменшує кількість отриманих стовпчиків до лише тих, які використовуються у програмі. Якщо ECS не ввімкнено, можливо, ви отримуєте більше даних, ніж потрібно, що може вплинути на продуктивність. Іноді, коли програма отримує дані через колекції, вихідний родовід або джерело стовпця може бути втрачено. Ми не знаємо, чи використовується він, і ми відмовляємося від нього за допомогою ECS. Зазвичай, можна змусити ECS працювати з відсутнім стовпцем за допомогою виразу PowerFx ShowColumns після посилання на колекцію або використавши його в елементі керування.

Обережно використовуйте зображення на галереях, таблицях і формах

Використовуйте Dataverse мініатюри зображень для галерей і таблиць. Dataverse Мініатюри мають розмір близько 1 кілобайт і зберігаються у вбудованому файлі як частина запису, а також корисні та швидкі для показу на елементах керування, які показують колекції. Усі інші посилання на зображення, включно з усіма SharePoint зображеннями, потребують окремого виклику та не повинні розміщуватися на галереї чи столі. Розміщуйте зображення, які потребують окремого звернення, на формах деталізації. Подумайте про те, щоб ніколи не показувати повне зображення за замовчуванням. Повні деталізовані зображення можуть бути корисними та важливими для користувачів. Однак ви можете зробити ці зображення доступними для користувачів за допомогою явної дії користувача, наприклад, кнопки або переходу на окрему сторінку. SharePoint Має ряд зображень середнього розміру, які можна використовувати для використання на формі, короткій за повне зображення. Dataverse має лише два розміри: мініатюру та повний.

Обчислення

Розділення формул за допомогою App.formula

Використання App.formulas та іменованих формул може допомогти зі швидкістю завантаження програми та навігації сторінкою, оскільки це дозволяє Power Fx вирішити, коли оцінювати формулу. Це означає, що не обов’язково оцінювати його в OnStart. Крім того, іменовані формули, як правило, також можуть допомогти прискорити роботу. Зокрема, якщо у вас довгий сценарій, розбиття його на іменовані формули дозволяє проводити більш ефективні обчислення, оскільки Power Fx може запланувати роботу та уможливити повторне використання. Докладнішу інформацію дивіться в розділі Формули програм.

Одночасне використання

Використовуйте функцію « Паралельний », щоб дозволити одночасне виконання формул. Ретельно вибирайте, де використовується паралельний прийом. Це може забезпечити деяке скромне прискорення, але якщо ви запускаєте елементи, які залежать один від одного, це може спричинити проблеми з часом і регулюванням.

Відкладіть значні оновлення на неблокуючий крок інтерфейсу користувача

Великі оновлення джерело даних можуть зайняти деякий час. Але користувачі очікують, що інтерфейс швидко поверне їм контроль. Завдання можуть бути послідовними, коли оновлення має завершитися до того, як користувач зможе виконати інші дії, або асинхронними (оновлення може завершитися окремо від дій користувача).

Прикладом трудомісткого синхронного завдання є підтвердження місця на концерті. Для більшості синхронних завдань, які забирають багато часу, як цей, зазвичай виставляється індикатор прогресу. Цей інтерфейс користувача фактично блокує, але гарантує, що завдання буде виконано до того, як інші елементи інтерфейсу будуть оновлені. Цей підхід може не підійти для вашої програми. Компанії зазвичай розглядають більш тривалі послідовні кроки як явний бізнес-крок. Ви можете перейти до наступного кроку за допомогою сигналу бізнес-процесу. Прикладом може служити схвалення. Схвалення може прийти швидко або затриматися. В інтерфейсі ви можете сигналізувати про те, що процес завершено, кількома способами. Можна ввімкнути кнопку, відобразити повідомлення, надіслати повідомлення електронної пошти або ввімкнути частину інтерфейсу користувача, наприклад пункт меню.

Прикладом асинхронної задачі є виконання замовлення. Клієнт оновлює кошик із замовленнями, опрацьовує замовлення, а потім розміщує замовлення. Але має відбутися кілька оновлень, перш ніж клієнт отримає підтверджену дату доставки. У цьому прикладі дату доставки не можна вказати відразу. , ви можете відкласти цю частину оновлення на повідомлення електронної пошти, яке буде надіслано клієнту пізніше.

Для синхронних завдань ви часто використовуєте код у Power Apps для завдань блокування інтерфейсу користувача. Наприклад, код чекає, поки він отримає значення, що повертається, а потім звільняє індикатор прогресу. Найкраще звести до мінімуму подібні ситуації. Але для завдань, які використовують явний бізнес-крок або асинхронні завдання, зазвичай використовується зовнішня служба для виконання завдання, наприклад Dataverse дія, збережена процедура або ланцюжок Power Automate .

Розмістіть «Длявсіх» належним чином

Якщо у вас є вираз за допомогою ForAll і collect, це виглядає так:

ForAll(x, Collect(y, { … }))

Потім інвертуйте це на

Collect(y, ForAll(x, { … }))

У першому шаблоні будь-яке залежне правило від колекції y повідомляється про зміни та обчислюється для кожної ітерації x. У другому шаблоні ці правила обчислюються лише один раз.

Уникайте посилань на Gallery.AllItems

Під час роботи з Power Apps ним краще уникати посилань на Gallery.AllItems, якщо вам не потрібні значення користувача. Це пов’язано з тим, що кожного разу, коли читається AllItems, генерується нова таблиця виводу. Замість цього використовуйте Gallery.AllItemsCount, якщо ви просто хочете знати, скільки елементів завантажено.

Обережно використовуйте Gallery.TemplateSize

Щоб забезпечити правильну візуалізацію галерей гнучкої висоти, важливо встановити розумний розмір за замовчуванням. Спочатку ми намагаємося відрендерити якомога більше рядків на основі цього значення. Якщо ви встановите розмір за замовчуванням на 0, ми спробуємо відобразити все, за винятком кількох крайніх випадків. Якщо ви використовуєте формулу, обов’язково встановіть мінімальне значення, коли формула може дорівнювати 0. Наприклад, ви можете використовувати Max (20, varFoo + rectBar.Height). Таким чином, якщо varFoo і rectBar.Height ще недоступні, ми принаймні використовуємо розумне значення 20.

Існує одна секундна затримка перед виявленням змін, що дозволяє завершити введення, а не виявляти зміни для кожного введення.