1 minute

En une minute : Mise en cache d’objets

Flattr this!

Je l'ai déjà évoqué à de multiples reprises sur ce blog, mais je vais le refaire. La mise en cache est une pratique clé pour les performances.

L'idée est simple : mettre dans une variable locale une autre variable contenue dans une autre. Pas besoin que l'élément mis en cache soit très bas dans l'arborescence de son objet. Même au premier niveau vous aurez un gain si l'objet parent tout en haut est global. Exemple :

var App = function () {
  controllers : [
    one : {},
    two : {
      some : "value"
    }
  ]
};

if(undefined !== App.controllers[0].some) {
  App.controllers[0].some = "thing";
}

Ici le script va d'abord vérifier si monObjet est local. Non. Il va donc remonter d'un score et non, toujours pas. Encore un scope, on arrive en global, et là on y est. Cette recherche est effectuée à chaque appel de la variable. Alors qu'avec le code qui suit, vous ne faites l'opération qu'une fois et après on en parle plus.

var some = App.controllers[0].some;
if(undefined !== some) {
  some = "thing";
}

Flattr this!

A propos de Mathieu

Ingénieur développeur web dans la vente par correspondance B2B, adepte de nouvelles technologies et d'innovation. Vous pouvez aussi me retrouver sur Twitter @mathrobin
Cette entrée a été publiée dans En une minute, avec comme mot(s)-clef(s) , , . Vous pouvez la mettre en favoris avec ce permalien.
  • https://twitter.com/ghoullier ghoullier

    Hello,
    Complètement d’accord avec toi sur la notion de mise en cache.
    Par contre, il faut faire attention sur les références immutable:

    var App = {
    controllers : [
    {},
    {
    some : "value"
    }
    ]
    };
    var some = App.controllers[1].some;
    if (undefined !== some) {
    some = "value";
    }
    some = "thing";
    console.log(some); //>> "thing"
    console.log(App.controllers[1].some); //>> "value"

    Si l’on souhaite modifier un propriété, il faut mieux mettre en cache son parent (ici le controller) puis modifier la propriété que l’on veux.

Articles liés