2014-11-25 19 views
6

Ho un grande file di codice sorgente di cui ho bisogno per analizzare un testo specifico. Voglio farlo il più velocemente possibile. Quale sarebbe il modo più veloce per farlo in Swift? Queste sono tutte le opzioni che potrei pensare?Swift: il modo più veloce per analizzare HTML

  • Utilizzo di una libreria di funzioni di stringa di terze parti- Ho provato questo. Funziona bene, ma immagino che questo sia molto più lento rispetto ad altri metodi di livello inferiore in generale, a meno che non ci siano alcuni in particolare quelli veloci là fuori specificatamente per Swift.

  • Utilizzo di un parser HTML di terze parti. Ne ho esaminati alcuni, ma non sono sicuro che soddisfino le mie esigenze. Prima di procedere con questo, voglio solo sapere se questi sono generalmente più veloci, se ci sono alcuni notabili veloci là fuori, e se sono in grado di modificarli per ottenere specificamente quello che voglio dal codice sorgente.

  • Utilizzo di String o NSString. Da quello che ho capito, l'utilizzo di String vs NSString non dovrebbe comportare differenze di velocità. Sono abbastanza a mio agio con questo approccio, ed è di livello inferiore rispetto ad altri, quindi dovrei aspettarmi prestazioni abbastanza veloci?

  • Uso di espressioni regolari. Mi è stato detto che dal momento che questi sono di livello inferiore, dovrebbero idealmente essere i più veloci. Ho usato espressioni regolari prima, ma non in iOS. È facile eseguire l'analisi delle stringhe con NSRegularExpression ed è più veloce?

Grazie!

+2

http://blog.codinghorror.com/parsing-html-the-cthulhu-way/ così rilevante per il tuo ultimo punto fa male. Non usare regex – d0nut

+0

Per espandere il punto valido di iismathwizard, il motivo per cui html non dovrebbe essere analizzato con espressioni regolari è che le espressioni regolari con html diventano troppo complicate e si riempiono di caratteri speciali fastidiosi. –

+0

Se si sta caricando questo testo in una specie di WebView, è possibile che sia sufficiente utilizzare JavaScript [Core] per consentire a WebKit di gestirlo direttamente. Altrimenti, gli dei possano avere pietà della tua anima. – CodaFi

risposta

0

venne su questo link, mentre la ricerca alla tua domanda: http://benedictcohen.co.uk/blog/archives/74

Gli autori spiega un approccio più vecchio a quello che @CodaFi suggerito, ma c'è un aggiornamento rilevante alla fine si dovrebbe verificare:

Il modo più semplice per analizzare HTML è trattarlo come XML e utilizzare il NSXMLParser . iOS è dotato di LibTidy che è in grado di risolvere una moltitudine di peccati di markup . Utilizzare LibTidy per creare XML pulito e passare questo XML a NSXMLParser. Utilizzare solo l'approccio sopra descritto se è non è possibile utilizzare NSXMLParser.

Quindi, forse l'opzione 4 o 5 per il check-out?

Problemi correlati