Innanzitutto fammi fare l'avvocato del diavolo: il codice in realtà non "esegue" nulla (niente di serio intendo, tranne per JS Packer). È essenzialmente una definizione di funzioni, oggetti e proprietà.
JS Packer non produce codice JavaScript ma piuttosto testo compresso che deve essere decompresso in fase di runtime. Ecco perché è molto più lento. Google Closure che utilizza l'ottimizzazione avanzata sostituisce gli identificatori quando possibile. Quindi, deve già esserci un vantaggio in termini di prestazioni durante l'analisi dello script.
Detto questo è possibile sacrificare le prestazioni per le dimensioni del codice. Un esempio è la sostituzione di true
e false
con !0
e !1
. Tuttavia dipende dal motore JavaScript. Potrebbe essere ottimizzato il motore prima della prima chiamata, dopo che, dopo qualche telefonata, mai ... chi lo sa;)
Nuove scoperte
ho fatto un po 'di profilazione nel frattempo e si rese conto che ho ho dimenticato una cosa: la garbage collection. L'influenza può essere sufficiente per spiegare alcune delle differenze tra gli script e i browser (diversi motori!).
Combina questo al fatto che il codice non fa molto e tu hai qualcosa. In un test ho avuto un tempo CPU per la garbage collection di circa il 3% per non compresso e il 9% (!) Per JSMin. Il che significa risultati completamente diversi per un codice quasi uguale.
risultati ancora più recente
Quando si esegue JSMin primo è più veloce di non compresso. L'ho provato diverse volte e ho sempre ottenuto lo stesso risultato. Questo conferma i risultati precedenti. Sono abbastanza fiducioso ora, che abbiamo trovato la soluzione.
possibile duplicato di [Vi è un problema di prestazioni durante l'esecuzione di codice offuscato?] (Http://stackoverflow.com/questions/2646216/is-there-a-performance-hit-when-running-obfuscated-code) – Barmar
Questo non è proprio un duplicato @Barmar - sì, si tratta di offuscamento, ma parla di Java e C#, non di JavaScript. – nnnnnn
Perché è necessario confrontare l'offuscamento con le prestazioni? Se qualcuno sente la necessità di offuscare il loro codice, non penso che la performance sarà una domanda. – Ozzy