--- title: "Use Profiling to Optimize Calculation Paths in your Application" slug: "profile-calculation-paths" description: "Optimize your model's performance by profiling calculation paths in Pigment, identifying slow Blocks, and enhancing efficiency for better results." updated: 2026-10-29T10:35:35Z published: 2026-10-29T10:35:35Z canonical: "kb.pigment.com/profile-calculation-paths" --- > ## Documentation Index > Fetch the complete documentation index at: https://kb.pigment.com/llms.txt > Use this file to discover all available pages before exploring further. # Use Profiling to Optimize Calculation Paths in your Application A key element in optimizing model performance is understanding how specific updates and their calculation paths can affect your model. In Pigment, you can profile these actions and calculation paths. You can identify which Blocks in the calculation path take the longest to execute and which formulas need optimization. Profiling directs you in adjusting your model to ensure the calculation paths deliver better performance times and eliminate model constraints. When you profile an action, you’re profiling the calculation path for the model at the time of the update. Remember that if the model has changed a lot, or if many objects have been deleted, this may not be reflected in the profile. In this case, you can redo the action or navigate to the dependency diagram within the profile to view the latest dependencies. ## Before you begin - **Permissions.** You need to have the **Builder Account Type** or above to view the calculation path from a specific update in an Application. - **Time period.** Updates in an Application are available for profiling for seven days. - **Scenarios.** If you’re using Scenarios in the Application you’re profiling, you may see multiple rows of the same Metric. Computations are executed based on the Scenario used in the Metric, so the model calculates according to the formula groups used in the Metric. Read more about formula groups in Scenarios in [Editing formulas within Scenarios](/v1/docs/profile-calculation-paths). Scenario information is only available for Metrics on the current Application, not on Metrics coming from other Applications. - **Access Rights and Permissions.** If you see that an object is “not found”, this could mean you don’t have access to the object. Alternatively, the object could have been deleted, or there may have been a technical error in loading the object. If you don’t have access to at least one of the Applications used by the Block, or if you don't have access to a particular Block in an Application, then profiling is unavailable. ### Prerequisite tasks We recommend that you have a good understanding of Pigment performance optimization. These topics can get you started: - [Use Performance Insights to Optimize your Application](/v1/docs/use-performance-insights) - [Top Tips for modeling in Pigment - Part 2: Performance Optimization](https://community.gopigment.com/modeling-guides-71/top-tips-for-modeling-in-pigment-part-2-performance-optimisation-418?tid=418&fid=71) You also require a good understanding of [formula scoping](/v1/docs/optimize-formulas-scoped-calculations). ## Profile an update You can profile updates from two places in your Application 1. To profile an update from anywhere in an Application: 1. Select the **History** button located above the formula playground button in the left sidebar. 2. Hover over the update you want to profile. A blue pop-up appears to the far right of the update. Select the ![](https://cdn.document360.io/e47cfe35-dc28-40c7-a083-6cf003073d8e/Images/Documentation/image(378).png?sv=2026-02-06&spr=https&st=2026-10-31T16%3A55%3A37Z&se=2026-10-31T17%3A55%3A37Z&sr=c&sp=r&sig=i3n9%2BEpM9xqdVpZ6roCXDqj4URyIXxpH8M7cYph57z4%3D) button with the **Profile update** tooltip. This opens the calculation path for this update. 2. To profile an update from a specific Block: 1. In your Board, expand the specific Block you want to profile. 2. Select the ![](https://cdn.document360.io/e47cfe35-dc28-40c7-a083-6cf003073d8e/Images/Documentation/image(379).png?sv=2026-02-06&spr=https&st=2026-10-31T16%3A55%3A37Z&se=2026-10-31T17%3A55%3A37Z&sr=c&sp=r&sig=i3n9%2BEpM9xqdVpZ6roCXDqj4URyIXxpH8M7cYph57z4%3D) symbol with the **Block updates** tooltip. 3. Hover over the update you want to profile. A tile with three blue dots appears to the right of the update. Select the three dots with the **Profile update** tooltip. This opens the calculation path for this update. ## Profiling pane When you profile a specific update, the following Profiling pane opens, giving information on the time the action took and which Blocks were revised as a result: ![](https://cdn.document360.io/e47cfe35-dc28-40c7-a083-6cf003073d8e/Images/Documentation/image(383).png?sv=2026-02-06&spr=https&st=2026-10-31T16%3A55%3A37Z&se=2026-10-31T17%3A55%3A37Z&sr=c&sp=r&sig=i3n9%2BEpM9xqdVpZ6roCXDqj4URyIXxpH8M7cYph57z4%3D) You can manage what the pane displays using the following functionality: - **Show all executions**. By default, Pigment only shows executions that are relevant for the data that Members were viewing anywhere on the Workspace when the update was made. Switch this toggle to on to show all executions caused by the update. - **Search**. Input names of objects to filter on. You can search for any output object of interest within the calculation path. This allows you to assess at a glance any objects of interest that you might want to optimize following a specific action in your model. - **Path to**. Use this drop-down to display the calculation path as far as the selected object. This includes objects linked through formula references as well as objects linked through computational dependencies leading to the selected object. It allows you to filter the profiling results to only the dependencies of the Table you’re interested in. - **Sort by**. Choose between: - **Chronological**. By default, all calculated objects in the Profiling pane are displayed in chronological order of calculation. - **Execution time**. Choose this to sort all the objects in the pane in descending order from the longest execution time to shortest. This allows you to quickly view the objects that were slowest to execute in order. - **Contention time**. Choose this to sort all the objects in the pane in descending order from the longest contention time to shortest. Contention time is the time an object spent waiting before it could execute, for example while other calculations were using the resources it needed. Hovering over an object name in the list opens a pop-up containing contextual information about that object. For objects that are Metrics, the pop-up contains a blue dependency diagram button. Select it to open the current dependency diagram for that Metric. ### Scheduling and execution times Each gray and blue line in the list refers to an object’s scheduling and execution times: - The **gray** line indicates the contention time for this calculation. It's the time between the moment the calculation is ready and the moment the execution starts. This contention time is due to other calculations using the resources. - The **blue** line displays the amount of time taken for the execution of each item within the calculation path. > [!NOTE] > ℹ️ Note > > The execution time represents time elapsed running and displaying formula output, as follows: > > - **Metrics and List Properties**. Execution time typically represents the time taken for the formula to run. If you optimize formulas in Metrics and List Properties, you can reduce this time. Ensuring that the formula or the preceding computation object is fully or partially scoped also helps to optimize execution time. > - **Tables**. Execution time typically represents the time it takes for the model to display the Metrics in the Table View. Ensuring that the formulas in preceding objects that lead to the Table are fully or partially scoped also helps to optimize execution time. ## Performance insights Hover over the gray and blue line to open a pop-up containing the following performance insights for each object: - **Ready at**. The beginning of the gray line. - **Executed at**. The beginning of the blue line. - **Execution**. The blue part of the line. - **Rows computed**. The number of rows on which Pigment performed calculations. - **Rows written**. The number of rows updated by the action. - **Rows deleted**. The number of rows removed by the action. > [!NOTE] > ℹ️ Note > > In the context of a Metric, a row refers to one value.