In traditional (non-distributed) applications, performance optimization is a substantial and ongoing effort—there are often individuals or even small teams dedicated to this effort and a vast array of techniques are employed to achieve the desired effect. These techniques include use of better algorithms, data structures with better performance characteristics, threads to parallelize computation, implementing caches, hoisting loop-invariant computations out of loops, and use of appropriate compiler options.
For distributed applications in general and Apex applications in particular, in addition to all of these techniques, a whole slew of new methods are applicable and will be covered in this chapter. Specifically, we'll cover the following topics:
- Partitioning and how it works
- Elasticity, operator state, dynamic scaling, and...