Skip to content

Instantly share code, notes, and snippets.

@nateberkopec
Created August 12, 2018 22:27
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nateberkopec/3639b2c07fc10883bb8ee6116517e7e4 to your computer and use it in GitHub Desktop.
Save nateberkopec/3639b2c07fc10883bb8ee6116517e7e4 to your computer and use it in GitHub Desktop.
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