366 votes

Comment pouvez-vous performance JavaScript code d’essai ?

Cycles de processeur, utilisation de la mémoire, temps d’exécution, etc.. ?

Ajouté : Est-il performance test en JavaScript en dehors de la perception juste de quelle vitesse le code s’exécute de manière quantitative ?

351voto

noah Points 9333

Les profileurs sont certainement une bonne façon d'obtenir des numéros, mais dans mon expérience, la perception de la performance est tout ce qui compte pour l'utilisateur/client. Par exemple, nous avions un projet avec un Ext accordéon, qui a élargi à montrer quelques données et quelques imbriquée Ext grilles. Tout ce qui a été effectivement rendu assez rapide, pas une seule opération a pris un long moment, il était juste beaucoup d'informations rendues tout à la fois, de sorte qu'il senti lent à l'utilisateur.

Nous "fixe" de cette, pas que le passage à une plus rapide du composant ou de l'optimisation d'une méthode, mais en rendant les données de la première, puis rendu les grilles avec un setTimeout. Donc, l'information est apparu en premier, puis les grilles pop en place d'une seconde plus tard. Dans l'ensemble, il a fallu un peu plus de temps de traitement pour le faire de cette façon, mais pour l'utilisateur, la perception de la performance a été améliorée.

235voto

Jose Browne Points 1073

Je suis d'accord que la perception de la performance est vraiment tout ce qui compte. Mais parfois, je veux juste savoir quelle méthode de faire quelque chose est plus rapide. Parfois, la différence est ÉNORME et vaut le savoir.

Vous pouvez simplement utiliser javascript minuteries. Mais j'ai généralement obtenir beaucoup plus de résultats cohérents avec les indigènes Chrome (également en FF) outil développeur d'internet explorer méthodes d' console.time() & console.timeEnd()

Exemple de comment je l'utilise:

var iterations = 1000000;
console.time('Function #1');
for(var i = 0; i < iterations; i++ ){
    functionOne();
};
console.timeEnd('Function #1')

console.time('Function #2');
for(var i = 0; i < iterations; i++ ){
    functionTwo();
};
console.timeEnd('Function #2')

Results Look like this

92voto

pramodc84 Points 788

Nous pouvons toujours mesurer le temps pris par n'importe quelle fonction par simple objet date .

 var start = +new Date();  // log start timestamp
function1();
var end =  +new Date();  // log end timestamp
var diff = end - start;
 

61voto

Relax Points 563

Essayez jsPerf . C'est un outil de performance en ligne javascript pour l'analyse comparative et la comparaison des extraits de code. Je l'utilise tout le temps.

30voto

Ramiz Uddin Points 2624

JSLitmus est un outil léger pour la création d'ad-hoc JavaScript tests de référence

Laissez examiner les performances entre function expression et function constructor:

<script src="JSLitmus.js"></script>
<script>

JSLitmus.test("new Function ... ", function() { 
    return new Function("for(var i=0; i<100; i++) {}"); 
});

JSLitmus.test("function() ...", function() { 
       return (function() { for(var i=0; i<100; i++) {}  });
});

</script>

Ce que j'ai fait ci-dessus est de créer un function expression et function constructor d'effectuer la même opération. Le résultat est comme suit:

FireFox Résultat De Performance

FireFox Performance Result

IE Résultat de Performance

IE Performance Result

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X