Comment mesurer le temps d'exécution du code javascript avec des rappels

J'ai un morceau de code javascript que je suis de l'exécution à l'aide de la node.js interprète.

for(var i = 1; i < LIMIT; i++){
    db.users.save({id : i, name : "MongoUser [" + i + "]"}, function(err, saved) {
          if( err || !saved ) console.log("Error");
          else console.log("Saved");
    });
}

Je veux savoir comment mesurer le temps pris par ces db opérations d'insertion. J'ai pu calculer la différence de valeurs de Date avant et après ce morceau de code, mais ce serait incorrect en raison de la nature asynchrone de la code.

  • Il suffit de lire le début de temps avant la db appel, et la fin des temps à l'INTÉRIEUR de la fonction de rappel..
  • Il est possible que le temps que la DB finitions de l'insert et le temps que le rappel est exécuté n'est pas la même et cela introduit une erreur de mesure ?
  • Non, vous ne devriez pas vous inquiéter à ce sujet, si la db code de la bibliothèque est bien conçu et ne pas manipuler de toute autre opération avant le déclenchement de la fonction de rappel, vous devriez obtenir une bonne mesure. Vous pouvez également le profil de l'insertion par mettre le timestamp à l'intérieur de la bibliothèque de code où l'insert est effectivement réalisé, au lieu de votre propre, mais, encore une fois, je ne serais pas s'inquiéter à ce sujet
  • Je recommanderais d'essayer NodeTime qui semble être un bon ajustement pour ce que vous essayez de faire.
  • J'ai écrit timerlog qui est similaire à console.time() mais avec des fonctionnalités supplémentaires; github.com/brillout/timerlog
InformationsquelleAutor Stormshadow | 2012-05-16