Module 1 - Principles | |
Who were Benford, Pareto, Zipf and Little? | |
Why is premature optimization bad? | |
What is benchmarking/profiling? | |
How to benchmark an HTTP service | |
How do I know how many servers I need to service a given load? | |
Little's Law | |
Exercise 1: Demonstrate Little's Law by benchmarking a demo application. | |
Module 2 - Benchmarking | |
Benchmark and benchmark/ips | |
What can you benchmark? | |
What's a good benchmark? | |
Pitfalls | |
Things to watch out for | |
Exercise 2: Benchmark a common feature in your application | |
Lunch break | |
Module 3 - Profiling CPU | |
Profiling in real time vs production | |
Why profiling isn't free | |
Profiling workflow (scientific method) | |
How profilers lie | |
Profiler modes | |
CPU time | |
Wall Time | |
Process time | |
Tracers | |
Samplers | |
How to use ruby-prof | |
Exercise 3: Profile a library. options: dalli, raven-ruby, hippie_csv. | |
Module 4 - Profiling Memory | |
Why we profile memory | |
How Ruby GC works in 5 minutes | |
The GC Module | |
Building your own profiler with ObjectSpace | |
More ObjectSpace tricks | |
What triggers GC? | |
Memory myth 1: memory goes down, right? | |
Heap fragmentation | |
GC tracing | |
derailed benchmarks and profiling startup | |
oink | |
Exercise 4: Let's profile your application! | |
Module 5 - Profiling the Web Request | |
rack-mini-profiler | |
Profiling in production-like environments | |
Auth with RMP | |
Understanding the speed badge | |
SQL | |
time | |
Outliers? | |
Flamegraphs | |
GC Profiler | |
Exception profiling | |
Exercise: profile a slow controller action with RMP | |
Module 6 - Application Metrics | |
Why it's fast on your machine | |
Development mode settings | |
Latency | |
Javascript | |
System config | |
Virtualization | |
What's "fast" for Rails | |
Applying the 80/20 rule | |
Exercise 6: A 10-minute introduction to profiling front-ends with Google Chrome DevTools | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment