2010-09-23 9 views

risposta

5

Il modo 'migliore' sarebbe:

var nameparts= ['Bob']; 
nameparts.push(' is a good name'); 
... 
nameparts.join(''); 

Tuttavia, la maggior parte delle moderne implementazioni JavaScript fanno ora rilevare concatenazione ingenuo e può in molti casi ottimizzarlo via, perché così tante persone hanno (ahimè) scritto codice in questo modo. Quindi, in pratica, il metodo "buono" non sarà oggi più veloce di una volta.

+0

Giusto - Penso che sia un peccato incasinare il codice adorabile con tecniche di ottimizzazione strettamente focalizzate. Detto questo, IE6 è stato davvero così orribilmente lento in alcune situazioni che questo particolare trucco è davvero buono da sapere. Per due o tre concatenazioni è sciocco, ma per numeri bassi come le poche centinaia può fare una differenza sorprendente. – Pointy

+0

Avete un elenco delle implementazioni che ottimizzano questo aspetto? – bobber205

+0

Sto modificando alcuni vecchi codici JS e la funzione che ha richiesto il 40% del tempo di esecuzione in base a Firebug è per lo più solo concatenazioni di stringhe. – bobber205

1

Enorme aumento delle prestazioni può essere ottenuto semplicemente utilizzando stringhe intermedie! È possibile creare classi simili a StringBuffer in JavaScript per ottenere un aumento ancora maggiore delle prestazioni.

Vedere l'articolo completo ei grafici here.

0

volta ho letto un articolo su questo argomento che offerente po 'di codice per costruire le stringhe tamponati con gli array:

http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation

ho provato io stesso ed è stato il modo più veloce in IE ... e il modo più lento in Firefox!

Per riassumere: ci sono molti motori JavaScript là fuori e non possiamo davvero fare affidamento su questo tipo di dettagli di implementazione. Se mai è un problema, noterai. Prima di quello, non importa troppo.

1

L'efficienza della concatenazione di stringhe dipende dal browser che si sta utilizzando. Puoi google per le statistiche, c'è anche un googleTalk disponibile su youtube. Da quello che posso ricordare, la maggior parte dei browser gestisce le concatenazioni di stringhe in modo efficiente quando il numero di elementi è inferiore a qualche migliaio. Dopo che IE rallenta a ritmo esponenziale, quando firefox, chrome e safari stanno andando molto meglio. Questo potrebbe cambiare poiché IE9 non è poi così lontano ora.