Aller au contenu
Alex PantaRetour aux projets

(02)Case study

AB Tasty — EmotionsAI

Stage · AB Tasty · 2023 → 2024

Performance · JavaScript

Le problème

Un client grand compte se plaignait de la latence du tag EmotionsAI sur ses sites en production. Au lancement, son code d’initialisation bloquait plus de 120 ms — autant de temps pendant lequel la page du client restait figée.

La contrainte

Le score EmotionsAI devait rester strictement identique avant et après : la moindre différence aurait faussé les calculs qui en dépendent. Le code était ancien, et devait continuer de tourner sur les navigateurs anciens qu’il supportait. J’étais seul dessus.

La méthode

Il a d’abord fallu reproduire le problème : DevTools en conditions 3G simulées, puis contrôle sur un outil de monitoring externe. Le temps se perdait sur une longue liste d’éléments que le tag parcourait en entier, alors que la plupart des cas ne s’appliquaient pas.

Deux changements : restreindre la liste à ce qui peut réellement s’appliquer, et remplacer le parcours linéaire par une recherche en O(log n) — sans rien casser sur les navigateurs anciens. Le tag optimisé est parti en production.

Le résultat

−56%

Blocking time · 120 ms → 53 ms

Blocking time du tag ramené de 120 ms à 53 ms.

  • JavaScript
  • Python
  • Jupyter
  • BigQuery
  • SQL
  • Django
  • MySQL