Nokogiri si basa su libxml2, che è uno dei più veloci parser XML/HTML in qualsiasi lingua. È scritto in C, ma ci sono collegamenti in molte lingue.
Il problema è che il più complesso il file, più tempo ci vuole per costruire una struttura completa del DOM in memoria. La creazione di un DOM è più lenta e più ricca di memoria rispetto ad altri metodi di analisi (generalmente l'intero DOM deve adattarsi alla memoria). XPath si affida a questo DOM.
SAX è spesso ciò che le persone si rivolgono a per la velocità o per documenti di grandi dimensioni che non rientrano nella memoria. È più guidato dagli eventi: ti informa di un elemento di avvio, di un elemento finale, ecc. E scrivi ai gestori di reagire a loro. È un po 'un dolore perché finisci per tenere traccia dello stato te stesso (ad esempio quali elementi sei "dentro").
C'è una via di mezzo: alcuni parser avere una capacità di "tirare parsing" in cui si dispone di un cursore di navigazione simile. Continui a visitare ogni nodo in modo sequenziale, ma puoi "avanzare velocemente" alla fine di un elemento che non ti interessa. Ha la velocità di SAX ma un'interfaccia migliore per molti usi. Non so se Nokogiri può fare questo per HTML, ma guarderei nel suo Reader API se sei interessato.
Si noti che Nokogiri è anche molto indulgente con il markup malformato (come HTML del mondo reale) e questo da solo lo rende un'ottima scelta per l'analisi HTML.
fonte
2010-10-27 23:40:34
nokogiri è la gemma più veloce in questo momento – s84
Ho trovato buoi meglio di nokogiri –