2010-01-17 18 views
8

Ho guardato il codice JavaScript di altre persone e ho notato che molti programmatori tendono a creare funzioni che potrebbero essere combinate con le funzioni che le chiamano. Un esempio è this; la funzione 'initWebGL' potrebbe essere combinata con la funzione 'start' e funzionerebbe allo stesso modo. Un altro esempio si trova nella fonte di this, dove la funzione 'tick', che viene chiamata ogni 15 millisecondi, effettua chiamate a due altre funzioni che possono anche essere combinate con 'tick'. Capisco le qualità organizzative di questo, ma sono curioso dell'effetto sulle prestazioni. Sta facendo questa buona pratica, soprattutto considerando che JavaScript è un linguaggio interpretato?Quanto costose sono le chiamate di funzione in JavaScript?

+1

Questo non dipende da quale interprete si utilizza? – kennytm

+1

Se un linguaggio di programmazione richiede di perdere l'organizzazione per essere abbastanza efficiente, tale linguaggio dovrebbe essere attivato. – seanmonstar

+4

Le chiamate di funzione in Javascript sono meno costose dell'incubo di manutenzione causato da codice mal organizzato. – friedo

risposta

9

Le migliori pratiche per qualsiasi lingua sono scrivere codice che sia leggibile e mantenibile prima, e quindi ottimizzare se necessario.

Se il programma esegue una suddivisione abbastanza veloce in blocchi facili da digerire, quindi lasciarlo in questo modo. Se sta funzionando lentamente, allora come Hobodave menzionato, profilo per trovare la causa della lentezza.

Le probabilità sono, sta andando per essere causato da qualcosa di diverso le funzioni di chiamata, ma se succede per essere causato da questo, poi funzioni di avviamento combinando insieme, una volta che hai rintracciato verso il basso per questo.

4

Il modo migliore per imparare "chiamate di funzione costosi sono", una metrica specifica completamente vaga e contesto, è di profilo da soli:

8

http://www.slideshare.net/madrobby/extreme-javascript-performance diapositive 10..19

10 000 chiamate fa la differenza in IE e Firefox. 1 chiamata no.

+0

Whoa, questo è molto interessante! Grazie mille! – Skofo

+0

Quello che prendo dal test (con i livelli di prestazioni del motore del 2010) è approssimativamente un costo minimo di 1ms per mille chiamate. Solo per quantificare la tua risposta. – hexalys

Problemi correlati