다음을 통해 공유


빠른 계산

Power Fx 표현식은 강력하며 자동으로 많은 백그라운드 계산을 수행합니다. Power Fx는 많은 일을 자동화하지만 계산을 최대한 빨리 미세 조정할 수 있습니다.

데이터 검색

명시적 열 선택 사용

명시적 열 선택(ECS) 기능은 모든 새 앱에 대해 기본적으로 활성화됩니다. 앱에서 활성화되어 있지 않으면 활성화해야 합니다. ECS는 검색되는 열 수를 애플리케이션에서 사용되는 열로만 자동으로 줄입니다. ECS가 활성화되지 않은 경우 필요한 것보다 더 많은 데이터를 검색할 수 있으며 이는 성능에 영향을 미칠 수 있습니다. 경우에 따라 앱이 컬렉션을 통해 데이터를 가져올 때 열의 원래 계보나 원본이 손실될 수 있습니다. 사용 중인지 알 수 없으며 ECS를 사용하여 삭제합니다. 일반적으로 컬렉션 참조 뒤에 PowerFx 표현식 ShowColumns를 사용하거나 컨트롤에서 이를 사용하여 ECS가 누락된 열에 대해 작동하도록 할 수 있습니다.

갤러리, 테이블, 양식의 이미지를 신중하게 사용하세요.

갤러리와 테이블에는 이미지의 Dataverse 썸네일 버전을 사용하세요. Dataverse 썸네일은 약 1KB로 작으며 레코드의 일부로 인라인으로 저장되며 컬렉션을 표시하는 컨트롤에 표시하는 데 유용하고 빠릅니다. 모든 SharePoint 이미지를 포함한 다른 모든 이미지 참조는 별도의 호출이 필요하며 갤러리나 테이블에 배치하면 안 됩니다. 별도의 호출이 필요한 이미지는 세부 정보 양식에 배치하세요. 기본적으로 전체 이미지를 표시하지 않는 것이 좋습니다. 전체 상세 이미지는 사용자에게 유용하고 중요할 수 있습니다. 그러나 명시적인 사용자 작업(예: 버튼 또는 별도 페이지 탐색)을 통해 이러한 이미지를 사용자에게 제공할 수 있습니다. SharePoint에는 전체 이미지가 아닌 형식에 사용할 수 있는 다양한 중간 크기 이미지가 있습니다. Dataverse에는 썸네일과 전체의 두 가지 크기만 있습니다.

계산

App.formula를 사용하여 수식 분할

App.formulas 및 명명된 수식을 사용하면 Power Fx가 수식을 평가할 시기를 결정할 수 있으므로 앱 로드 및 페이지 탐색 속도에 도움이 될 수 있습니다. 즉, OnStart에서 반드시 평가할 필요는 없습니다. 또한 명명된 수식은 일반적으로 속도에도 도움이 될 수 있습니다. 특히 긴 스크립트가 있는 경우 명명된 수식으로 나누면 Power Fx가 작업을 예약하고 재사용할 수 있으므로 보다 효율적인 계산이 가능합니다. 자세한 내용은 앱 수식을 참조하십시오.

Concurrent 사용

Concurrent 함수를 사용하면 수식이 동시에 실행될 수 있습니다. 동시 실행 위치를 신중하게 선택하세요. 약간의 속도 향상을 제공할 수 있지만 서로 의존하는 항목을 실행하는 경우 타이밍 및 제한 문제가 발생할 수 있습니다.

비차단 UI 단계에 대한 중요한 업데이트 연기

데이터 원본에 대한 대규모 업데이트를 완료하는 데 시간이 걸릴 수 있습니다. 그러나 사용자는 UI가 제어권을 신속하게 반환하기를 기대합니다. 작업은 사용자가 다른 작업을 수행하기 전에 업데이트가 완료되어야 하는 순차적이거나 비동기적일 수 있습니다(업데이트는 사용자 작업과 별도로 완료될 수 있음).

시간이 많이 걸리는 동기 작업의 예로는 콘서트 좌석을 확인하는 것이 있습니다. 이와 같이 시간이 많이 걸리는 대부분의 동기 작업의 경우 진행률 표시줄을 표시하는 것이 일반적입니다. 이 UI는 실제로 사용자를 차단하지만 다른 UI 요소가 업데이트되기 전에 작업이 완료되도록 보장합니다. 이 접근 방식은 귀하의 애플리케이션에 적합하지 않을 수 있습니다. 기업에서는 일반적으로 더 긴 순차적 단계를 명시적인 비즈니스 단계로 처리합니다. 비즈니스 프로세스 신호를 통해 다음 단계로 넘어가도록 승인되었습니다. 대표적인 것이 승인입니다. 승인은 빨리 이루어질 수도 있고 지연될 수도 있습니다. UI에서는 여러 가지 방법으로 프로세스가 완료되었음을 알릴 수 있습니다. 버튼을 활성화하거나, 메시지를 표시하거나, 이메일을 보내거나, 메뉴 항목과 같은 UI의 일부를 활성화할 수 있습니다.

비동기 작업의 예로는 주문 완료가 있습니다. 고객은 주문 바구니를 업데이트하고 주문을 진행한 다음 주문합니다. 그러나 고객에게 배송 날짜가 확정되기 전에 몇 가지 업데이트가 이루어져야 합니다. 이 예에서 배송 날짜는 즉시 쉽게 제공할 수 있는 날짜가 아닙니다. , 나중에 고객에게 전송되는 이메일로 업데이트의 이 부분을 연기할 수 있습니다.

동기 작업의 경우 UI 차단 작업을 위해 Power Apps의 코드를 자주 사용하게 됩니다. 예를 들어 코드는 반환 값을 얻을 때까지 기다렸다가 진행률 표시줄을 해제합니다. 이러한 유형의 상황을 최소화하는 것이 가장 좋습니다. 그러나 명시적 비즈니스 단계 또는 비동기 작업을 사용하는 작업의 경우 외부 서비스를 사용하여 Dataverse 작업, 저장 프로시저 또는 Power Automate 흐름과 같은 작업을 완료하는 것이 일반적입니다.

"ForAll"을 적절히 배치

ForAll 및 수집을 사용하는 표현식이 있으면 다음과 같이 표시됩니다.

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 + retBar.Height)를 사용할 수 있습니다. 이렇게 하면 varFoo 및 retBar.Height를 아직 사용할 수 없는 경우 최소한 합리적인 값인 20을 사용합니다.

변경 사항이 감지되기 ​​전에 1초의 지연이 있으므로 입력할 때마다 변경 사항을 감지하는 대신 입력을 완료할 수 있습니다.