Farò del lavoro su una stringa separata dalla linea. Quale sarà più veloce, per dividere prima il testo tramite String.split e poi camminare sull'array risultante o percorrere direttamente l'intero testo tramite un reg exp e costruire l'array finale sulla strada?Domanda di prestazione: String.split e quindi cammina sull'array o RegExp?
risposta
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.
Mi aspetto che usare split() sarà molto più veloce. Dipende da molte specifiche, numero di linee rispetto alla lunghezza, complessità delle regex, ecc.
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
Questa risposta è basata sull'esperienza :) come ha detto dfltr, devi sperimentare per il tuo caso particolare. – RedFilter
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
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é)
- 1. dart come abbinare e quindi sostituire un regexp
- 2. Velocità di prestazione di KVO e NSNotifiche?
- 3. Differenza tra String.scan e String.split
- 4. Differenza tra l'utilizzo di StringTokenizer e String.split()?
- 5. Quale è più veloce, XPath o Regexp?
- 6. Java String.split() Regex
- 7. Lanciare, quindi controllare o controllare, quindi trasmettere?
- 8. Prolog "o" operatore, domanda
- 9. Prestazione relativa di geom_raster()
- 10. Consigli di prestazione H2
- 11. Domanda JavaScript: Onbeforeunload o Onunload?
- 12. Prestazione concatenamento CSS
- 13. Sovraccarico non documentato di string.Split()?
- 14. jQuery - regexp selezionando e removeClass()?
- 15. Pattern.split più lento di String.split
- 16. WPF rendering prestazione lenta
- 17. Ant 1.8.0 bassa prestazione
- 18. Differenza di prestazione nella condizione di loop?
- 19. $ scope vs questa prestazione
- 20. Strange String.split ("\ n") comportamento
- 21. MongoDB: Terribile prestazione MapReduce
- 22. Ancoraggi `^` e `$` in Oracle regexp
- 23. Dichiarazione CASE MySQL e REGEXP
- 24. Scanner vs. StringTokenizer vs. String.Split
- 25. Domanda Django e SSL
- 26. Gestione ruby regexp di nbsp
- 27. Prestazione RenderAction vs RenderPartial
- 28. Differenza di prestazione per multi-thread e multi-processo
- 29. Hibernate Query vs criteri di prestazione
- 30. Guava Sets.intersection prestazione errata
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
Quindi non fidarti di firebug - crea e confronta anche un paio di oggetti data – annakata
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