2009-06-08 5 views

risposta

12

Bene, il modo migliore per ottenere la tua risposta è prendere solo 2 minuti e scrivere un ciclo che fa entrambi i modi mille volte e controlla firebug per vedere quale è più veloce;)

Ho dovuto ottimizzare un sacco di stringhe durante il lavoro su MXHR e, secondo la mia esperienza, i metodi di stringa semplici sono significativamente più veloci di RegExps nei browser correnti. Utilizza RegExps sulle stringhe più brevi possibili e fai tutto il possibile con i metodi String.

Per esempio, io uso questo piccolo numero nel mio codice corrente:

var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', ''); 

È brutto come l'inferno, ma che ci crediate o no è molto più veloce rispetto al RegExp equivalente sotto carico elevato.

+1

Ho considerato il test tramite Firebug ma in realtà non mi fidavo della misurazione del tempo di JS. Grazie mille per la risposta con un esempio di supporto;) – BYK

+0

Quindi non fidarti di firebug - crea e confronta anche un paio di oggetti data – annakata

+0

Beh, non mi fido degli oggetti Data JS stessa da quando (qualche tempo fa) I Ho provato a misurare le prestazioni, anche se ha affermato che era millisecondo preciso, restituiva sempre multipli di secondi. Questo è il motivo per cui non mi fido di esso. – BYK

1

Mi aspetto che usare split() sarà molto più veloce. Dipende da molte specifiche, numero di linee rispetto alla lunghezza, complessità delle regex, ecc.

+0

Grazie per aver tempo di risposta. Mi aspettavo anche che i metodi nativi fossero più veloci, ma nulla può essere migliore di un'esperienza per questa domanda IMO. Grazie comunque =) – BYK

+1

Questa risposta è basata sull'esperienza :) come ha detto dfltr, devi sperimentare per il tuo caso particolare. – RedFilter

+0

Beh, il problema è che non conosco la dimensione della stringa e la regexp sarà un semplice \ n | \ r matcher se uso regexp. Altri suggerimenti? =) (BTW mi dispiace per aver pensato che fosse una stima;)) – BYK

9

Mentre questo è 2 anni e mezzo di ritardo, speriamo che questo aiuta a far luce sulla questione per eventuali spettatori futuri: http://jsperf.com/split-join-vs-regex-replace (Include benchmark risultati per più browser, come pure il codice di riferimento funzionale per sé)