Ho cercato del codice JavaScript progettato per essere eseguito in un ambiente sensibile alle prestazioni, principalmente un motore di gioco negli ambienti mobili .L'utilizzo di variabili locali (anziché accesso a proprietà ripetute) ha mai danneggiato le prestazioni?
In molti casi questo codice non utilizza variabili locali ma preferisce invece utilizzare catene esplicite, ad es.
if (this.x.y[z].i) {
this.x.y[z].a += this.x.y[z].b;
}
Dove sia this.x.y
e this.x.y.z
rappresentano "doppioni" - e dove nessuna delle proprietà intermedie hanno getter, e dove q
è una variabile locale non utilizzato altrove - possono essere trattati semanticamente equivalente a quanto segue.
var q = this.x.y[z]
if (q.i) {
q.a += q.b;
}
(I nomi sono stati mantenuti vaghi particolare per cercare di attenuare pregiudizi; questa domanda non è su quale "modello" da seguire - anche se io preferisco la seconda e l'intenzione di usarlo al 100% e quindi chiedo questa domanda.)
Ora, prima di avere un gran numero di commenti parlando di "codice di scrittura per chiarezza" e "non ottimizzare prematuramente", continua a leggere!
Quindi, dato il seguente asserzioni/assioma e notando che questa domanda è non su come migliorare le prestazioni, ma piuttosto se si utilizza/variabili locali cache "alias" può diminuzione prestazioni rilevanti implementazioni JavaScript:
- L'introduzione di una variabile locale, quando si accede a un membro molte volte, porterà a un codice più chiaro. (Questo è soggettivo, ma è un assioma nell'interesse della domanda.)
- Utilizzando una variabile locale, come mostrato, per le proprietà non dinamiche avrà sempre la stessa semantica.
- Ci sono no chiusure create sulle variabili locali; in quanto tale, non vi è alcuna preoccupazione per l'aumento della durata degli oggetti o per il mantenimento di un ambito di contesto di esecuzione più ampio.
- Focus è su browser browser, comprese le varietà non/JIT basso - ad es. JavaScriptCore e/o qualsiasi cosa riguardasse Android prima del V8.
- I browser sono già ottimizzati per questo caso e non è previsto che l'utilizzo di variabili locali comporterà un notevole aumento delle "prestazioni": questa domanda è l'opposto.
può/si utilizza le variabili locali invece di [multiplo] risultato l'accesso alle proprietà diretto in un diminuzione in termini di prestazioni? Dove tale diminuzione è "non trascurabile .."
Il modo in cui rispondi a una domanda del genere è il test. In generale, il caching di un valore in una variabile locale non danneggerà mai le prestazioni e probabilmente lo migliorerà. –