J'ai un cas d'utilisation où j'ai besoin d'obtenir le nombre total de lignes JavaScript exécutées lorsque ma page Web est chargée. P>
Le problème que je suis confronté est que le navigateur jette une alerte lorsqu'un certain nombre d'exécution JS dépasse (5 millions, je pense en cas d'IE) et la page est pendue. P>
J'ai utilisé le profileur disponible dans la barre d'outils de développeurs IE, mais cela me donne le nombre total de fonctions JS appelées mais pas le nombre total / nombre de lignes exécutées. P>
Toute aide est appréciée. P>
merci p>
4 Réponses :
in Bash: dans php: p> dans nœud.js: p> Essayez Minification pour réduire vos numéros de ligne. P> Ceci Semble comme un terrible beaucoup de code, cependant. p> p>
Ça ne le fera pas. C'est-à-dire que les déclarations de comptage sont exécutées (non des lignes de code), les déclarations à l'intérieur des boucles sont comptées sur chaque itération, etc. Ceci est indiqué dans MSDN Blog POST Mellamokb fourni dans son commentaire sur la question.
Yeh, je répondais à leur question initiale, mais la réponse correcte est "réécrire ton code, c'est trop de code".
Tout d'abord, vous devriez vraiment redéfinir votre code; 5 millions de déclarations sans remettre le contrôle sur le navigateur sont par tous les moyens beaucoup de code, imaginez comment les navigateurs mobiles vont lutter avec elle. P>
Un moyen de savoir combien d'instructions sont exécutées consiste à instruminer votre code, en ajoutant une instruction pour chaque instruction de votre code pour compter le nombre de fois qu'il a été exécuté, doublant efficacement le nombre de déclarations de votre code. < / p>
Il existe également des outils de couverture de code pouvant exécuter à l'intérieur du navigateur sans avoir à instruminer votre code du tout; Googling pour "Couverture de code JavaScript" donne une bonne quantité d'extensions de navigateur que vous pouvez utiliser, telles que HrTIMer . < / p>
Il suffit de la diviser en morceaux plus petits et appelle après un délai d'attente - qui arrive autour de la question à savoir. E.G.
somethingBig(); setTimeout(somethingElseBig);
Je doute fort que cela est basé sur des lignes de code. Cela déclenche probablement lorsque le moteur JS prend trop de temps sans passer le contrôle du navigateur.
tandis que (vrai); code> entraînera également la pague ... obtenez ce que je dis?
@Thieftmaster: J'aurais pensé la même chose, mais il semble intéressant que l'OP soit réellement correct: blogs.msdn.com/b/jpsanders/archive/2008/09/23/...
J'ai pu résoudre ce problème dans ma machine en faisant le nombre de lignes inifinites de 5 millions de dollars en modifiant le registre, mais cela n'est pas possible pour tout le monde qui utilise ma page Web.L'utilise un outil qui me dise le nombre de lignes?
Vous faites quelque chose de terriblement faux ici.
Au lieu de travailler autour de la question, j'investirais ce délai de refactoring. 5 millions d'instructions est beaucoup pour toute page Web. Pas même Facebook, avec tout l'ajax en cours, entrave des millions.
D'après ce que je comprends, il s'agit de 5 millions de déclarations sans i> remettre le contrôle au navigateur, il y a donc une certaine salle de refactoring :)