Download - Mature optimization (Carlos Bueno, Facebook)
![Page 2: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/2.jpg)
FACT: You are not clairvoyant.
![Page 3: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/3.jpg)
![Page 4: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/4.jpg)
Who cares?
Very obvious!
![Page 5: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/5.jpg)
![Page 6: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/6.jpg)
The Plan 1: Measure Carefully. 2: ???? 3: Profit!
![Page 7: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/7.jpg)
The Plan (revised) 0: Define the Problem. 1: Measure Carefully. 2: ???? 3: Profit!
![Page 8: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/8.jpg)
Define the Problem. “WidgetFactoryServer is too slow!”
![Page 9: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/9.jpg)
Define the Problem. “WidgetFactoryServer is too slow!” Problem definitions must be specific enough to suggest a way forward, and testable. You need a falsifiable statement.
![Page 10: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/10.jpg)
Define the Problem. • WidgetFactoryServer is CPU-bound
• Run a profiler
• Optimize the slow functions
• CPU time should decrease
![Page 11: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/11.jpg)
FACT: People have a lot of advice about writing fast programs. Most of it is horseshit.
![Page 12: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/12.jpg)
HipHop Virtual Machine (HHVM)
C++
JIT
CPU Time
![Page 13: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/13.jpg)
The Plan 0: Define the Problem. 1: Measure Carefully. 2: ???? 3: Profit!
![Page 14: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/14.jpg)
Measure continuously.
![Page 15: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/15.jpg)
Daily & Weekly Cycles
![Page 16: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/16.jpg)
Collect RAW data, not metrics.
![Page 17: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/17.jpg)
Record lots of metadata.
![Page 18: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/18.jpg)
Directly measure what you are optimizing.
![Page 19: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/19.jpg)
Distrust numbers. Especially your own.
![Page 20: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/20.jpg)
“I don’t believe in the Performance Fairy.” Jeff Rothschild
![Page 21: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/21.jpg)
Monitoring & Investigation
• Crashing is cheap.
• No errors logged, but no data returned.
• Did you buy faster servers?
• Did you turn off slower servers?
• Did some servers just die?
![Page 22: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/22.jpg)
Choose metrics carefully.
![Page 23: Mature optimization (Carlos Bueno, Facebook)](https://reader033.vdocuments.us/reader033/viewer/2022051817/54922cb6b4795969178b53a2/html5/thumbnails/23.jpg)
Questions? carlos.bueno.org/optimization