symfony-yoandev-performance
Performance
Tier: on demand — every rule here follows a measurement. Nothing in this skill is done pre-emptively, including the query-count test, which is written for a list that has been seen to grow.
Measure, fix the query, then write the test that stops it coming back.
Everything in this skill assumes the ordering. A cache added before a measurement does not make an application fast; it makes it fast and wrong, because the slow query is still there and now it also serves stale data. Caching is the last move, not the first.
Measure first
The profiler is the whole toolbox. Load the page, open the toolbar, click the
Doctrine panel: number of queries, time per query, the SQL itself, and — because
profiling_collect_backtrace is on in debug — the line of code that triggered each one.
Read it in this order, because the answer is almost always in the first line: