Introduction
Microsoft introduced Sampling Profiling in Business Central 2022 release wave 1 (AKA BC20) after having introduced Instrumentation Profiling in Business Central 2021 release wave 2 (AKA BC19).
Profiling allows you to collect data about performance and analyze this data with the goal of optimizing a certain area in the code or a certain process. The AL Profiler for the AL Language extension for Microsoft Dynamics 365 Business Central offers options for instrumentation profiling and sampling profiling.
There are two types of profiling: instrumentation profiling and sampling profiling. Both types of profiling are based on a snapshot of running code. The instrumentation profiling is more accurate and provides more insight. The sampling profiling is less accurate but can provide faster insights into performance trends on code.
Profiling mobile requests
The above methods are useful to analyze the performance of time-consuming processes done directly in the web client like Calculate Plan or generating reports or even re-processing requests from the Mobile Document Queue. However, re-processing requests should only be done for Lookups and GetPickOrders and other read-only document types. If you re-process PostPickOrder or other read/write document types, you will risk getting transactions posted twice with undesirable results.
To analyze the performance of any kind of Mobile Request you can enable automatic profiling for selected Mobile Users or Mobile Document Types:
The profiler will automatically store Sampling Profiling data for each request while it is enabled for either the Mobile User or the Mobile Document Type. Enabling the profiler will only last for 15 minutes at a time and you can disable the profiler again if you wish to stop it earlier. You find the data in the Performance Profiler Entries window:
From here you can download the .alcpuprofile file and examine it in either Visual Studio Code:
or Business Central Performance Profiler:
The result from the profiling is not an exact representation of the executed code and expect to both lack details and have orphaned elements which are placed incorrectly in the visualization. The level of detail and visual code structure is gathered by the core of Business Central and cannot be changed by Mobile WMS. However, the longer the profiled request is running, the more likely is it you will find the problematic code. It is therefore recommended only to analyze requests running for longer than 750 ms.
OnPrem
For OnPrem environments there seem to be an undocumented feature to change the sampling interval for performance profiling.
For more information, please visit https://www.waldo.be/2022/09/30/setting-the-sampling-interval-for-in-client-performance-profiling-business-central/
See also