Come creare un profilo e ottenere prestazioni JavaScript

Possibile duplicato:
Qual è il modo migliore per tracciare l’esecuzione di javascript?

Ho alcuni script che usano jQuery, e penso di avere una perdita di memoria in uno di essi.

Come si può profilare e trovare quali parti degli script sono in uso più memoria / CPU?

Grazie

Per quanto riguarda il consumo di memoria

Le perdite di memoria in JavaScript vengono solitamente ignorate tranne quando si trasformano in perdite di memoria del browser (ovvero, anche dopo che l’utente si è allontanato dalla pagina, la memoria continua allocata e non c’è modo di liberarla). La ragione di ciò è che mentre la tua applicazione web potrebbe avere perdite di memoria, gli utenti passeranno da una pagina all’altra in modo da ridurre al minimo le perdite. Tuttavia, potrebbero non riavviare il browser, quindi le perdite di memoria del browser potrebbero essere gravi. Qualche codice JavaScript è noto per causare perdite di memoria su alcuni browser, essendo Internet Explorer probabilmente il peggiore in quest’area. Per questo si può trovare il rilevatore di perdite di memoria di JavaScript di Microsoft per essere molto utile.

Per quanto riguarda i tempi

IE, Chrome e Safari hanno creato profiler negli strumenti di sviluppo web forniti con il browser. Per Firefox è ansible utilizzare Firebug. Può anche essere utile, dal momento che stai usando jQuery, il che significa che il tuo rapporto di profilazione sarà riempito con funzioni anonime e simili, rendendo il tutto illeggibile, il plugin di profilazione jQuery di John Resig , che ti darà un risultato più chiaro in merito.

Usa Firebug . Per citare da http://getfirebug.com/js.html :

Per utilizzare il profiler, vai alla scheda Console e fai clic sul pulsante “Profilo”. Quindi usa la tua app per un po ‘o ricarica la pagina e poi fai nuovamente clic sul pulsante “Profilo”. Vedrai quindi un rapporto dettagliato che mostra quali funzioni sono state chiamate e quanto tempo ciascuna ha preso.

Suggerirei di dare un’occhiata al profiler in Firebug e al plugin Drip per IE per cercare perdite di memoria.

Inoltre, tieni presente che la maggior parte delle perdite di memoria javascript provengono da riferimenti circolari tra oggetti DOM e oggetti javascript non interrotti quando l’object DOM viene scaricato. Per evitare ciò, suggerirei di evitare di creare riferimenti a oggetti javascript nelle proprietà dell’object DOM (ad esempio, evitare qualcosa come document.getElementById('foo').bar = myObject; ). Se devi creare questi riferimenti circolari, assicurati di romperli da soli in una funzione che viene eseguita quando la pagina viene scaricata o quando rimuovi gli oggetti DOM prima di scaricarli.

Google Chrome ha anche le opzioni del profilo

Un altro modo semplice per testare una parte di codice specifica è aggiungere un timer attorno ad esso.

 var testStart = new Date(); // code to be tested here $('#jstest').html("selected function: "+ (new Date() - testStart) + " milliseconds"); 

Dove jstest è un elemento span da qualche parte visibile sulla tua pagina.

Sebbene Chrome abbia opzioni di profilazione integrate, non fornisce informazioni precise sull’object. Quindi preferisco usare lo strumento leak-finder-for-javascript che mi ha aiutato nel mio codice.

https://code.google.com/p/leak-finder-for-javascript/

Spero che aiuti.

Firebug o Google Page Speed ​​per Firefox dispongono di strumenti di profilazione.

Questo post di John Resig (jQuery) può essere utile per rilevare perdite di memoria in IE:

http://ejohn.org/blog/deep-tracing-of-internet-explorer/