What are the current compiled costs associated with each formula function?
- There are a lot of functions to check, so building a complete list will take a bit of work. I've made this a community post so others can contribute if they like.
- Salesforce changes the implementation of functions over time, so the exact costs can change.
- Determining the compiled formula cost currently relies of comparing the compiled size of a formula that includes the function with one that doesn't. There may be other factors that affect the compiled size of a function. For instance, some functions cost depends on the argument values.
- +: 3
- -: 3
- *: 3
- /: 3
- ^: 9
- (): 1 each (each pair costs 2)
- AND/&&: 7 for two parameters, 6 for each extra parameter
- CASE: 27 for minimum 4 parameters, 12 for each extra pair of parameters
- IF: 26
- ISNULL: 10
- ISNUMBER: 81
- NOT, !: 6
- OR/||: 6 for two parameters, 5 for each extra parameter
- <, >, =: 3
- >=, <=, <>: 4
- ISCHANGED: ?
- ISNEW: ?
- &, +: 4
- +: 3
- DATE: ?
- DATEVALUE: 30
- DATETIMEVALUE: ?
- DAY: 19
- MONTH: 21
- NOW: 7
- TODAY: 9
- YEAR: 20
- ADDMONTHS: 15
- ABS: 5
- CEILING: 112
- EXP: 5
- FLOOR: 112
- LN: 4
- LOG: 9
- MAX: 12 for two parameters, plus 2 per extra parameter
- MIN: 9 for two parameters, plus 2 per extra parameter
- MOD: 7, plus length of second parameter
- ROUND: 9, plus length of second parameter
- SQRT: 6
- BEGINS - 57 + length of length parameter
- BR - 18
- CASESAFEID ~ 2073. Depends on Reference & Object.
CASESAFEID(Foo__c)takes less than
CASESAFEID(Foo__r.Id). Standard Objects seem to take less than custom - Idea to reduce size
- CONTAINS - 58 +length of length parameter
- FIND - 46
- GETSESSIONID - 13
- HYPERLINK - Base of 88, increases by 1 for each
- IMAGE - Base of 19, increases by 1 for each
- LEFT - 26+length of length parameter
- LEN - 15
- LOWER - 37
- MID - 38+length of length parameters.
- RIGHT - 45+length of length parameter
- SUBSTITUTE - 29
- TEXT - 42 for Number field, 64 for DateTime field
- TRIM - 18
- UPPER - 37
- VALUE - 23
Some optizations exist in the compiler engine. For example, mathematical operations that do not involve fields are "solved" to their final value. For example,
1+5 compiles to just 1 character, because the result is always 6. Similarly, functions like NULLVALUE use no extra characters if the field is required (e.g.
NULLVALUE(Name,'No Name') uses 12 characters).