Instantly share code, notes, and snippets.

Embed
What would you like to do?
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