Slow website. Why does Sitecore perform so badly?

Caching framwork form Sitecore in great, BUT don't rely too much on it.  My first checklist:

  1. Quality, Quality, Quality. Setup sonarqube and remove duplicated Code and all critical and blocker issues, if there are some. See more how to setup sonarqube here.
  2. Zero warning policy.
  3. Check code for expensive sitecore item Iteration.
  4. Don't use axis, xpath or Sitecore Query at all. Use lucene search instead if possible.
  5. Use sc_debug=1 in the URL to show expensive layouts.
  6. Check google speed insights. Optimize Images and shink html with this code. Check JS with the frontend guys.
  7. Visual Studio Ultimate has built-in load testing capability. You can easily build out and run your load tests on a remote server and simulate traffic to your website to see how it reacts. 
  8. Use a CDN and as last resort Varnish cache.
  9. Check SQL server for slow queries here.