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


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

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.

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