La libreria di analisi XML C ++ più veloce

2

Ho migliaia di file .xml dalla dimensione 1MB-45MB (nessun DTD). Ho bisogno di analizzare e manipolare ulteriormente questi file XML prima di generare file .xml separati con i risultati della mia regex.

Quale libreria di analisi XML open-source più veloce per C ++? A parte la libreria di analisi, quali altri approcci posso utilizzare per accelerare l'analisi XML?

    
posta A T 27.10.2011 - 07:40
fonte

2 risposte

1

La velocità non elaborata di un parser XML o del motore RegEx sta andando a fare la differenza rispetto a un processore più veloce con codice in esecuzione che è facile da comprendere e amp; mantenere?

Dall'esempio che hai dato, posso immaginare che file molto grandi vengano elaborati. Anche così non saresti più saggio nel cercare di trovare un modo per suddividere i file e elaborarli in parallelo per aumentare il throughput e sfruttare più core piuttosto che concentrarsi su differenze relativamente piccole nella velocità della libreria.

    
risposta data 27.10.2011 - 08:06
fonte
1

RapidXml is an attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility. It is an in-situ parser written in modern C++, with parsing speed approaching that of strlen function executed on the same data.

link

Forse potresti iniziare a confrontare Expat con questo? Expat è noto per essere veramente efficiente in termini di velocità. RapidXml è usato come backend di alcune librerie di boost, principalmente Boost.PropertyTree.

Inoltre, penso che forse un approccio più specifico per lo schema xml potrebbe (forse) essere più efficiente grazie alla conoscenza della struttura del codice. Tale affermazione è solo una supposizione, ma se sei interessato, CodeSynthesis fornisce un generatore di codice C ++ che accetta un file xsd come input. Il codice di analisi risultante potrebbe essere più utile ... se si impiega tempo per definire il formato in un xsd. Ci sono altri strumenti simili disponibili ma è quello che sto usando per il mio ultimo progetto. Questi strumenti sono per lo più basati su xerces ma puoi generare codice che è indipendente. Non ho idea dell'impatto sulle prestazioni.

    
risposta data 31.10.2011 - 23:28
fonte

Leggi altre domande sui tag