Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Mesurer (par)tout, tout le temps
Search
Timothée Peignier
September 16, 2012
Programming
680
2
Share
Mesurer (par)tout, tout le temps
Timothée Peignier
September 16, 2012
More Decks by Timothée Peignier
See All by Timothée Peignier
Dr. Rubocop
tim
0
200
Et votre backoffice ?
tim
0
280
Mobile Web Performance
tim
1
330
Un site web mobile en Django
tim
1
450
Other Decks in Programming
See All in Programming
Kingdom of the Machine
yui_knk
2
1.4k
t *testing.T は どこからやってくるの?
otakakot
1
900
Oxlintとeslint-plugin-react-hooks 明日から始められそう?
t6adev
0
320
JOAI2026 1st solution - heron0519 -
heron0519
0
180
継続的な負荷検証を目指して
pyama86
0
210
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
1
190
Road to RubyKaigi: Play Hard(ware)
makicamel
1
540
ハーネスエンジニアリングとは?
kinopeee
13
6.8k
cloudnative conference 2026 flyle
azihsoyn
0
100
いつか誰かが、と思っていた フロントエンド刷新5年間の実践知
kiichisugihara
1
250
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
120
PHPer、Cloudflare に引っ越す
suguruooki
1
140
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Context Engineering - Making Every Token Count
addyosmani
9
860
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
540
エンジニアに許された特別な時間の終わり
watany
106
240k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
210
sira's awesome portfolio website redesign presentation
elsirapls
0
230
A designer walks into a library…
pauljervisheath
211
24k
Designing for humans not robots
tammielis
254
26k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
500
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Designing for Performance
lara
611
70k
Transcript
Mesurer (par)tout, tout le temps
Nous écrivons du code.
Notre travail est de générer de la valeur.
Notre code est un sous-produit.
Notre code génère de la valeur quand il est exécuté,
pas quand nous l’écrivons.
Que fait notre code quand il s’exécute ?
Mesurer.
Notre code ne se comporte pas comme nous le pensons.
None
“Ce code ne peut pas échouer”
(et pourtant il échoue) “Ce code ne peut pas échouer”
“Ce code ne peut pas fonctionner”
(et pourtant il fonctionne) “Ce code ne peut pas fonctionner”
Cela affecte nos décisions.
def sort(obj_list): time.sleep(10) obj_list.sort() def sort(obj_list): obj_list.sort() Lequel est le
plus rapide ? ❶ ❷
def sleep(): # I’m poison pass
def sort(self): # I’m evil raise RuntimeError
Mesurez-le, vous le saurez.
Moins de confusion, de meilleures décisions.
Mesurer, continuellement, en production.
Et python dans tout ça ?
pip installwhisper carbon graphite-web statsd metrology
librato newrelic ( )
Gauges Counters Meters Histograms Timers
Gauges Il y a n workers actifs
statsd.gauge(“workers”, state.workers_count)
Gauges Counters Meters Histograms Timers
Counters Il y a n jobs en attente
counter = Metrology.counter('pending') counter.increment() counter.decrement()
Gauges Counters Meters Histograms Timers
Meters Il y a n requêtes/s
meter = Metrology.meter('requests') meter.mark()
Gauges Counters Meters Histograms Timers
Histograms La taille de la réponse
histogram = Metrology.histogram('response-sizes') histogram.update(len(response.content))
Gauges Counters Meters Histograms Timers
Timers Temps de réponse
timer = Metrology.timer('responses') with timer: make_response()
Collecter, Agréger, Monitorer.
Données historiques + Déploiements + Pannes + Comportement en charge
None
None
None
None
Votre vision de votre code sera plus proche de la
réalité.
Merci beaucoup ! @cyberdelia lanyrd.com/sxqqf (ne soyez pas timide, posez
votre question)