Skip to content

Instantly share code, notes, and snippets.

@nateberkopec nateberkopec/workshop.txt Secret
Created Aug 12, 2018

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?
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
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
Exercise 4: Let's profile your application!
Module 5 - Profiling the Web Request
Profiling in production-like environments
Auth with RMP
Understanding the speed badge
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
System config
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
You can’t perform that action at this time.