Benchmarking your code is art. Every single line of code written makes a difference, so Each developer should know how effectively his code is working. This session will help you to learn benchmarking techniques and help you to build more robust and elastic applications. It’s About CPU Time. Join us to learn about Apex Code Benchmarking.
Before Winter’14
- Script limit – Total number of line of Apex code executed
- Separate limits for each Managed Package (Aloha)
- Trigger Context – 200,000 lines
- Async (Batch & Future) – 1,000,000 lines
- Workflow, Process Builders, and Formulas has no limits at all
What Changed After Winter’14?
Script Limits were changed to calculate CPU Time Usage
Why is Software Benchmarking hard?
- Time measurement can’t trusted because system performance varies based on time of day and momentary load.
- Debug log cost CPU time
- You don’t have control on background operations like garbage collection
- Result might change with each patch release
Consequences
- Assignment from static field reference is 20x time slower than variable assignment
- Assignment from dynamic field reference is 30x time slower than static assignment
- Use temporary variable instead of referencing a field multiple times!
- The cost of sending email notifications via Workflows can add up 15 ms/email (10 field merge
template). Ultimately that is 3 seconds for 200 records ! - What is Alternative then? Create task for user – only 0.5 ms per record (tested with basic formula workflow)
- Validation Rules : Each validation formula function takes about 30 microseconds. Example : 10 validation rules, each with 10 functions, applied to 200 records = 600 ms
How to prevent this?
- Use Limits.getCPUTime() to find out you are getting into trouble, then either exit or go async if you are getting close
- Learn more advance architectures to detect reentrancy
- Try to use Platform event in your solution for Async operation
- Accept that you still may get the blame
Apex Code Benchmarking Video
Please note that we have limit of 200 attendees that can join the online sessions. However, recording will be posted on our YouTube channel. Make sure to subscribe our YouTube channel to get notification for video upload.