diff --git a/pages/presentations/qui_suis_je.md b/pages/presentations/qui_suis_je.md index 8f84bb6..6bd97cc 100644 --- a/pages/presentations/qui_suis_je.md +++ b/pages/presentations/qui_suis_je.md @@ -13,5 +13,4 @@ Contributeur Sylius, Symfony.. \ No newline at end of file +Je me présente, Valentin Silvestre, développeur web depuis 8 ans majoritairement sur Symfony. Je travaille chez Akawaka depuis 2 ans et je participe à l’open source à diverses occasions.--> \ No newline at end of file diff --git a/public/1.12-release-content.png b/public/1.12-release-content.png deleted file mode 100644 index 4e47f1d..0000000 Binary files a/public/1.12-release-content.png and /dev/null differ diff --git a/public/8qhfg7.gif:Zone.Identifier b/public/8qhfg7.gif:Zone.Identifier new file mode 100644 index 0000000..e481584 --- /dev/null +++ b/public/8qhfg7.gif:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://imgflip.com/ +HostUrl=https://i2-download.imgflip.com/8qhfg7.gif diff --git a/public/Untitled (2).png:Zone.Identifier b/public/Untitled (2).png:Zone.Identifier new file mode 100644 index 0000000..fbe8cfb --- /dev/null +++ b/public/Untitled (2).png:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://www.notion.so/ +HostUrl=https://file.notion.so/f/f/39a76d00-7c1b-4c40-a42e-83f88b409182/32c500b6-9dcd-4ae0-b22d-b2a4e3b70013/Untitled.png?id=329e9cd8-1d01-48ba-8e18-69808cc9c0eb&table=block&spaceId=39a76d00-7c1b-4c40-a42e-83f88b409182&expirationTimestamp=1716127200000&signature=wF6-IjnSXY2TgJ4mvL1q2LZK4tx3drSSpSqGy0GJno0&download=true&downloadName=Untitled.png diff --git a/public/blackfire_ui.png b/public/blackfire_ui.png new file mode 100644 index 0000000..33389af Binary files /dev/null and b/public/blackfire_ui.png differ diff --git a/public/call_graph_details.png b/public/call_graph_details.png new file mode 100644 index 0000000..d4dde3e Binary files /dev/null and b/public/call_graph_details.png differ diff --git a/public/cto.png b/public/cto.png new file mode 100644 index 0000000..ad12c1e Binary files /dev/null and b/public/cto.png differ diff --git a/public/flamegraph_wiki.png b/public/flamegraph_wiki.png new file mode 100644 index 0000000..42da3b7 Binary files /dev/null and b/public/flamegraph_wiki.png differ diff --git a/public/flamegraph_wiki_uptodown.png b/public/flamegraph_wiki_uptodown.png new file mode 100644 index 0000000..999e9c6 Binary files /dev/null and b/public/flamegraph_wiki_uptodown.png differ diff --git a/public/flamegraph_wiki_uptodown_zoom.png b/public/flamegraph_wiki_uptodown_zoom.png new file mode 100644 index 0000000..d39b47e Binary files /dev/null and b/public/flamegraph_wiki_uptodown_zoom.png differ diff --git a/public/kcachegrind.png b/public/kcachegrind.png new file mode 100644 index 0000000..d1b5f7a Binary files /dev/null and b/public/kcachegrind.png differ diff --git a/public/marketplace_stats.png b/public/marketplace_stats.png deleted file mode 100644 index 6a66efb..0000000 Binary files a/public/marketplace_stats.png and /dev/null differ diff --git a/public/profiler_methodologie.png b/public/profiler_methodologie.png deleted file mode 100644 index 69f1d9c..0000000 Binary files a/public/profiler_methodologie.png and /dev/null differ diff --git a/public/pyroscope.png b/public/pyroscope.png new file mode 100644 index 0000000..21c05c1 Binary files /dev/null and b/public/pyroscope.png differ diff --git a/public/qr_blog_5_years.png b/public/qr_blog_5_years.png deleted file mode 100644 index 4fff3f1..0000000 Binary files a/public/qr_blog_5_years.png and /dev/null differ diff --git a/public/sentry-explaination.png b/public/sentry-explaination.png new file mode 100644 index 0000000..dc9b401 Binary files /dev/null and b/public/sentry-explaination.png differ diff --git a/public/sentry_explaination_2.png b/public/sentry_explaination_2.png new file mode 100644 index 0000000..df59677 Binary files /dev/null and b/public/sentry_explaination_2.png differ diff --git a/public/sentry_flamegraph.png b/public/sentry_flamegraph.png new file mode 100644 index 0000000..0f312ab Binary files /dev/null and b/public/sentry_flamegraph.png differ diff --git a/public/sentry_ui.png b/public/sentry_ui.png new file mode 100644 index 0000000..d6bad83 Binary files /dev/null and b/public/sentry_ui.png differ diff --git a/public/speedscope.png b/public/speedscope.png new file mode 100644 index 0000000..54c39d6 Binary files /dev/null and b/public/speedscope.png differ diff --git a/public/symfony-profiler-interface.png b/public/symfony-profiler-interface.png new file mode 100644 index 0000000..b107f64 Binary files /dev/null and b/public/symfony-profiler-interface.png differ diff --git a/public/symfony-profiler-serializer.png b/public/symfony-profiler-serializer.png deleted file mode 100644 index 12db450..0000000 Binary files a/public/symfony-profiler-serializer.png and /dev/null differ diff --git a/public/webgrind.png b/public/webgrind.png new file mode 100644 index 0000000..f55fb1a Binary files /dev/null and b/public/webgrind.png differ diff --git a/public/xdebug_profiler.png b/public/xdebug_profiler.png new file mode 100644 index 0000000..2655e3c Binary files /dev/null and b/public/xdebug_profiler.png differ diff --git a/public/xhgui.png b/public/xhgui.png new file mode 100644 index 0000000..60301db Binary files /dev/null and b/public/xhgui.png differ diff --git a/slides.md b/slides.md index acd109b..6178483 100644 --- a/slides.md +++ b/slides.md @@ -6,14 +6,14 @@ highlighter: shiki lineNumbers: true info: false css: unocss -hideInToc: true +hideInToc: true --- -# TITRE DE LA CONF -SOUS TITRE DE LA CONF +# L'état des profilers PHP en 2024 +Introduction, explication et qui sont les acteurs en place ? --- @@ -25,27 +25,542 @@ hideInToc: true + + --- layout: center class: text-center src: ./pages/presentations.md --- +--- +layout: quote +title: La définition +level: 1 +--- + +# Le _profilage de code_ + + + +--- +layout: quote +hideInToc: true +--- + +# La définition + + + + + + +--- +layout: center +hideInToc: true +--- + + + + + +--- +layout: center +hideInToc: true +--- + +# Historique + +Le premier date de 1970 ! + + + +--- +layout: section +title: Fonctionnement +level: 2 +--- + +# Fonctionnement + + + +--- +layout: two-cols-header +hideInToc: true +--- + +::left:: + + +::right:: + + + + + + + +--- +layout: section +hideInToc: true +--- + +# Comment on visualise nos résultats ? + + + +--- +layout: center +hideInToc: true +--- + + + + + +--- +layout: iframe +url: https://svgur.com/i/169a.svg +hideInToc: true +--- + + + +--- +layout: section +hideInToc: true +--- + + + + + +--- +layout: section +hideInToc: true +--- + +## Flamegraph 🔥 + + + + + + + + + +--- +layout: two-cols-header +hideInToc: true +--- + +# Schéma sampling + + + +::right:: + +# Speedscore (visualisation) + + + + + +--- +layout: image +image: /flamegraph_wiki_uptodown_zoom.png +--- + + + + +--- +layout: center +hideInToc: true +--- + +- 1,6 milliard/j +- 20k/sec +- 3M de trace par jour + + + +--- +layout: section +hideInToc: true +--- + + + + + --- layout: section -title: Sylius 1.12 level: 1 --- -# Sylius 1.12 + +## Profilers PHP les plus utilisés en 2024 + + + --- layout: section -title: Conclusion +hideInToc: true +--- + +# Blackfire + + + + + +--- +layout: center +hideInToc: true +--- + +# L'argent & | l'administratif.. + + + + + + + +--- +layout: section +level: 1 +--- + +# Cas d'utilisation courants et exemples de mise en œuvre en production + + + +--- +layout: center +hideInToc: true +--- + + + + + +--- +layout: section +hideInToc: true +--- + +# Pyroscope + + + + + +--- +layout: section +hideInToc: true +--- + +# Speedscope + + + + + +--- +layout: section +hideInToc: true +--- + +# Le messi : Sentry + + + +--- +layout: image +image: /sentry_ui.png +hideInToc: true +--- + + + +--- +layout: section +hideInToc: true +--- + +# Récap + +| Tool | Call graph | Flame graph | Autre visualisation | Historisation | Open source | +|-------------------------|------------|-------------|---------------------|---------------|-------------| +| Excimer-ui | | ✅ | | | ✅ | +| Pyroscope | | ✅ | | ✅ | ✅ | +| Blackfire | ✅ | | | ✅ | | +| Sentry | | | ✅ | ✅ | ✅ | +| Outil cachegrind locaux | ✅ | | ✅ | | ✅ | + + + + +--- +layout: section +level: 1 +--- + +# Cas d'utilisation courants et exemples de mise en œuvre en environnement local + + + +--- +layout: center +hideInToc: true +--- + +## XDEBUG +```ini +sudo apt-get install php-xdebug +install-php-extensions xdebug +xdebug.mode = profile +xdebug.output_dir = /app/public/xdebug +xdebug.start_with_request = trigger // démarre avec un header +``` + +## XHPROF +```ini +install-php-extensions xhprof +xhprof.output_dir = /app/public/xhprof +``` +```php +xhprof_enable(); +register_shutdown_function(function () { + $data = xhprof_disable(); + file_put_contents('public/xhprof/'. uniqid() . '.yourapp.xhprof', serialize($data)); +}); +``` + + + +--- +layout: section +hideInToc: true +--- + +# XDebug + + + +> docker run --rm -v ./public/xdebug:/tmp -p 800:80 jokkedk/webgrind:latest + + + + + +--- +layout: default +hideInToc: true +--- + +# XDebug + + + + + +--- +layout: iframe +url: https://svgur.com/i/169a.svg +hideInToc: true +--- + +--- +layout: default +title: Visualisation de XHProf +level: 2 +--- + +# XHProf & XHGui + + + + + +--- +layout: default +title: Impact sur les performances +level: 1 +--- + +# Impact sur les performances (échantillonage vs instrumentation) + +| Env | Pas de profiling | Excimer | Xhprof | Xdebug | +|------|------------------|-----------------|------------------|-------------------| +| Dev | ~1,76sec | ~1,78sec (1.1%) | ~2,77sec (57.4%) | ~5,55sec (215.3%) | +| Prod | ~665ms | ~680ms (2.3%) | ~1200ms (80.5%) | ~2200ms (230.8%) | + + + +--- +layout: default +title: Mais pourquoi profiler en production ? +level: 1 +--- + +# Pourquoi profiler en production ? + +## Difficulté à être iso + + + +- Extensions +- Données +- Variable d'environnement +- Dépendances + + + + + +--- +layout: section +title: Bilan & perspectives d'avenir des profilers après 2024 level: 1 --- -# Conclusion + +# Bilan & perspectives d'avenir des profilers après 2024 + + + +Sentry & excimer c'est tip top ! + + + + + + --- layout: end hideInToc: true --- - \ No newline at end of file +