2012-11-20 11 views
9

La mia comprensione della "compilazione" di JavaScript è che condensa e minimizza il codice per salvare in definitiva i byte.JavaScript minisito/compilato rispetto a JavaScript non compresso in termini di prestazioni

La condensazione o la minimizzazione rendono JavaScript più veloce?

Prendere i seguenti esempi a titolo oneroso:

var abcdefghijklmnopqrstuvwxyz = 1; 
// vs. 
var a=1; 
var b = function() { 
    // Here is a comment 
    // And another 
                                 // White space 
    return true; 
}; 

// vs. 

var b=function(){return true} 

mi sono imbattuto questi esempi attraverso jsPerf with little or no difference.

Può la compilazione di JavaScript renderlo più veloce o più lento, oltre al salvataggio di byte?

+5

Ciò a cui ti riferisci non è in alcun modo la compilazione. Ti suggerirei di modificare la tua domanda. –

+0

Quindi, se eseguo il mio JS tramite il compilatore di chiusura di google, non viene compilato in alcun modo? https://developers.google.com/closure/compiler/ – Blowsie

+0

javascript è javascript. Il motore js può facoltativamente compilare javascript, ma di per sé non è compilato in alcun modo. Qualsiasi beneficio in termini di prestazioni può essere causato da riscrittura del codice o trascurabile (come nel tuo esempio). – Zirak

risposta

16

Sì, la compilazione nel senso delle trasformazioni applicate da qualcosa come Google Closure Compiler può rendere lo script più veloce. Si consideri questo esempio molto semplice:

var x = ["hello", "james"].join(" "); 

che compila:

var x="hello james"; 

che è sia meno codice e più veloce da eseguire. Ovviamente questo è un esempio sciocco. Spero che scriverai tu stesso la versione compilata. Tuttavia, dimostra che Closure è in grado di offrire miglioramenti delle prestazioni oltre a miglioramenti delle dimensioni dei file.

Dalla documentazione di chiusura (il corsivo è mio):

la chiusura compilatore è uno strumento per fare scaricare Javascript e correre più veloce. È un vero compilatore per JavaScript. Invece di compilare da una lingua di origine a un codice macchina, viene compilato da JavaScript a JavaScript migliore.

Modifica

Per un esempio del compilatore Chiusura in realtà aumentare le dimensioni di un file JavaScript nel tentativo di offrire miglioramenti delle prestazioni, vedere la mia risposta a this question.

+0

Suppongo che JavaScript non compilato abbia anche il potenziale per usare più 'memoria' contro javascript compilato? – Blowsie

+0

@Blowsie - Probabilmente è meno probabile, poiché è improbabile che le cose che si memorizzano in memoria cambino a seguito della compilazione (e le cose archiviate inutilmente saranno comunque raccolte inutilmente). Ma probabilmente è possibile, sì. –

+1

Quindi in effetti non è un compilatore ma uno strumento che ridefinisce le prestazioni. –

1

Minificato e non minorato non dovrebbe fare alcuna differenza in termini di velocità di esecuzione. L'unica differenza potrebbe essere che la versione minificata sarebbe più veloce da analizzare, ma anche che quando hai un file molto grande (non troverai differenze con il test che hai eseguito, è solo troppo piccolo).

modifica: la prima affermazione che ho fatto è valida se si sta facendo semplicemente il "minimo" di base. Se stai usando il compilatore Closure come mostrato da James, potrebbero esserci alcune differenze se gli strumenti di Clousure ottimizzassero il tuo codice ...

Problemi correlati