Ci sono diversi parser...non so...magari potresti trovarne uno più leggero.
Certo se usi il DOM del php dovrebbe essere il più veloce poichè credo si interfacci direttamente a moduli in codice macchina (compilati).
Un'altra soluzione è cercare di suddividere file xml molto grossi (perchè poi è questo il problema di fondo no?) in moduli di dimensione ridotta...magari elimina alcuni rami dall'albero e inseriscili in un file apposito lasciando solo il riferimento. Così se ti servono vai a leggerli altrimenti li ignori.
I file XML sono molto belli purtroppo però occorre prima di sfruttarne le caratteristiche gerarchiche 'deserializzarli' (cioè leggerli e parsarli dal primo all'ultimo carattere)...in php non c'è ancora un modo, che io sappia, di creare dgli oggetti permanenti in modo da eseguire il lavoro una volta sola.