When is this a problem?
Look for functions that result in data that doesn't change (i.e., the parent of a line item). Placing these functions in a systems module means that the calculation is run once and can be referenced by multiple line items in multiple modules. Look for: PARENT(PARENT(PARENT(line item))), text field concatenations, and time functions such as START(), CURRENTPERIODSTART(), CURRENTPERIODEND(), etc.
Why is this a problem?
Calculations that are repeated can slow down performance. When these types of functions are included as part of longer formulas, think about how many times they may run if they are included in multiple line items and for multiple list members. It is better for performance for the calculation to run once and be referenced many times.
How to correct:
Locate the functions that can be moved to a systems module. Create the systems module, add the function as a line item, and then change the original calculation to reference the line item in the systems module.
Creating Systems Modules
Build a Time Systems Module
Reduce Calculations for Better Performance
Questions on this topic? See Are there line items that can be placed in a systems module rather than within a calculation module? in our Model Optimization Checklist forum.