Retour à la leçon
Mission

Mission : traquer une fonction devenue megamorphic

Diagnostiquer pourquoi une fonction de traitement de commandes casse les optimisations de V8, puis stabiliser sa forme d'objet.

Contexte

Une fonction traiterCommande(commande), appelée un million de fois par jour, ajoute parfois une propriété optionnelle après coup :

js
function creerCommande(id, montant, urgente) {
    const commande = { id, montant };
    if (urgente) {
        commande.note = "urgent";
    }
    return commande;
}

function traiterCommande(commande) {
    delete commande.temporaire;
    // ... traitement ...
    return commande;
}

Le profiling DevTools indique que le site d'appel dans traiterCommande est devenu "megamorphic".