Drupal 8 has introduced many new subsystem and modules. While caching has been improved with cache tags and contexts, raw performance both of bootstrap, routing, route access checking and generating full HTML responses is significantly slower.
Profile common scenarios (standardized list being worked on at) with warm, 'cool', and cold caches to identify possible optimizations.
- Warm cache: every possible cache get is a cache hit.
- Cool cache: site-wide caches are a hit, but cache gets specific to context are cold (i.e. the first time node/2 gets visited when other caches were warmed by /user)
- Cold cache: most or all cache gets are a cache miss (+ router and container rebuilds).
Once issues are identified, they should be opened according to issue priority (see https://www.drupal.org/core/issue-priority) as a child or related issue to this one.
A performance issue is critical by itself if some of the following are true:
- There is concrete performance issue identified by profiling (MySQL, PHP or browser equivalent) and a viable plan to resolve it
- It can't be committed to a patch-level version (8.0.0 => 8.0.1)
- Over ~100ms or more savings with cold caches and would have to be deferred to a minor version
- Over ~10ms savings with warm caches and would have to be deferred to 9.x
- Over ~1ms or more with the internal page cache and would have to be deferred to 9.x
- Gets measurably worse with lots of contrib modules or large data sets (e.g. non-indexed queries) and would have to be deferred to a minor version
- Other specific issues at branch maintainer discretion
- Complete the list of 'common profiling scenarios', ensure each has been profiled and issues opened for anything found
- Try to fix as many issues as possible before we hit zero critical issues, then repeat the profiling to see what's left and review outstanding child issues to confirm whether they're OK to fix after release or should be promoted to critical (due to necessary API changes etc.)
User interface changes