Optimiser votre code javascript avec Performance.now()

de | septembre 6, 2015

Lorsque vous voulez tester le temps pris par une fonction pour s’exécuter en JavaScript, vous disposez d’un outil parfait pour ça : Performance.now().

Contrairement à la function Date.now() qui est calculée par rapport à l’heure du système, Performance.now() est incrémentée de manière constante. Prenons un exemple :

function testIncrementString() {
    var str = "0";
    for ( var i = 0; i <= 1000000; i++) {
        str++;
    }
}

function testIncrementNumber() {
    var nbr = 0;
    for ( var i = 0; i <= 1000000; i++) {
        nbr++;
    }
}

Ces deux fonctions réalisent le même traitement, incrémenter un nombre. La première incrémente un nombre définis en tant que String alors que la deuxième incrémente un Integer. Voici le test effectué :

let start = performance.now();
testIncrementString();
let end = performance.now();
console.log('Temps d\'exécution de la méthode testIncrementString : '+ (end - start));

start = performance.now();
testIncrementNumber();
end = performance.now();
console.log('Temps d\'exécution de la méthode testIncrementNumber : '+ (end - start));

Et voici les résultats obtenus :

Temps d'exécution de la méthode testIncrementString : 12.192525000000003 
Temps d'exécution de la méthode testIncrementNumber : 0.7343619999999902 

Ce test est simple mais permet de voir comment utiliser la méthode performance.now(). Le même test serait possible avec Date.now() mais une modification de l’heure système entrainerait un résultat erroné (Changement d’heure, Modification NTP).  Dans le cas de notre test qui dure 12 micro seconde, cela à très peu de chance d’arriver. Dans le cas d’un test se déroulant sur plusieurs heures, voir jours, cela peut vite fausser les résultats. Un autre avantage de la méthode performance.now() est la précision du résultat. Microseconde contre Milliseconde.

Can i use

Can i Use nous indique que le support n’est pas encore parfait. OperaMini et Safari mobile , ne le supportent pas encore. Pour le reste, vous pouvez l’utiliser sans aucun problème.

A bientôt.

00

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.