7
votes

Temps de calcul passé à l'intérieur de la boucle en JavaScript

Comment vérifier le nombre de secondes (ou ms) passées à l'intérieur de la boucle particulière en JavaScript. J'ai un algo de tri mis en œuvre dans JavaScript, maintenant j'utilise Bubble Tri, je veux utiliser un tri rapide. Je sais en termes d'efficacité du temps, le tri rapide est bon. Mais je veux calculer le nombre réel de SEC ou MILLI SEC a passé à l'intérieur de la boucle la plus interne. Comment puis-je faire en JavaScript?


1 commentaires

Ajout à toutes les réponses, une fonctionnalité plus utile que j'ai trouvée dans Firebug est "Timing and PROFING", getfirebug.com/logging, aide à déterminer la performance JavaScript.


5 Réponses :



5
votes

Le temps n'est pas vraiment précis sur la plupart des navigateurs, vous pouvez vous attendre à une marge d'erreur d'environ 15 ms:

var start = (new Date).getTime();
/* Your code. */
var diff = (new Date).getTime() - start;


1 commentaires

C'était un très bon article !! Merci . Jamais pensé à ça.



2
votes

D'autres ont déjà répondu à la façon de faire le calcul du temps, donc je répondrai à votre commentaire: "Je trie des objets d'objets dans lesquels je trie en fonction de l'une des propriétés de l'objet. So Tri intégré que je ne peux pas Utilisez. "

Ce n'est pas vrai du tout, vous pouvez toujours utiliser la tri intégré: xxx


4 commentaires

Donc, dans la pièce de code ci-dessus, sa comparaison de la propriété de texte de 2 objets? Quel algo est utilisé en interne? signifie-t-il comparer chacun n chaque objet ou une meilleure algue?


@sat: pour Firefox, fusionne le tri. Ceci est utilisé à la place du tri rapide pour que l'ordre de tri est stable. Voir BugZilla.Mozilla.org/show_bug.cgi?id=224128 .


@David: arr.sort (fonction (x, y) {return x.text> y.text? 1: x.text .


@Kenny merci pour cette superbe info.u apprendre à apprendre beaucoup de choses avec des questions simples.



2
votes

Si vous utilisez Firebug, vous pouvez faire

console.time('someNameHere');
// Do things here
console.timeEnd('someNameHere');


0 commentaires

7
votes

Toutes les autres réponses de ce thread sont old .

Utilisez ceci maintenant, c'est standard https://developer.mozilla.org/en-us/docs/web/web/api/performance.now xxx


0 commentaires