2012-04-12 6 views
2

Ich verwende derzeit native Java XML-Verarbeitungsbibliothek (Xerces). Ich kann keinen Sax Parser verwenden, da ich einen zufälligen Zugriff auf XML-Knoten benötige. Ich stelle fest, dass die CPU-Auslastung beim Analysieren von XML-Dateien 100% beträgt. Es gibt eine große Anzahl von kleiner Größe (1-10kb), die ich verarbeiten bin wie this-jdom Leistung

while(hasFile){ 
processXMlfile(hasFile.next); 
} 

In processXMlfile() Ich baue das Parsen und Verarbeitungsdatei.

Wenn ich in JDOM-Bibliothek verschieben, werde ich irgendwelche Leistungsvorteile erhalten?

+0

Haben Sie bei VTD-xml geschaut? Für Heavy Duty XML Processing ist es unübertroffen ... Lesen Sie diese neue Forschungsarbeit, die umfassende Studien von bestehenden Java Xml Processing Frameworks http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf –

Antwort

3

Der Flaschenhals ist wahrscheinlich XML-Parsing, und JDOM wird wahrscheinlich den gleichen XML-Parser unter den Abdeckungen verwenden, so dass es keinen Unterschied machen wird.

Ein Schlüsselfaktor beim Analysieren vieler kleiner Dateien besteht darin, die Parserinitialisierungskosten zu vermeiden. Verwenden Sie dieselbe XML-Parser-Instanz für alle Dateien erneut.

+0

Danke Michael . Nach der Wiederverwendung von Instanzen, obwohl CPU-Auslastung bleibt @ 100%, hat der Durchsatz erheblich verbessert (von ca. 40-50 Dateien auf ca. 200 Dateien) – user837208

+0

CPU-Nutzung von 100% ist sicherlich eine gute Sache, warum sollten Sie weniger wollen? –

+0

Ich werde nicht ... manchmal Systemadministratoren sehen es nicht als eine gute Sache. Für sie ist es eine rote Flagge Situation – user837208

5

JDOM 2.0.0 behebt eine Reihe von Leistungsproblemen. Eine davon steht in direktem Zusammenhang mit der Verarbeitung von XML-Dateien in "Tight Loop".

Werfen Sie einen Blick auf:

SAXBuilder saxbuilder = new SAXBuilder(); 
saxbuilder.setVariousConfigurations() 
SAXEngine saxengine = saxbuilder.buildEnine(); 

while(hasfile) { 
    processXML(saxengine, nextfile); 
} 

Mit dem SAXEngine Konzept in JDOM 2.0.0 wird das Setup des SAX-Parsing vollständig eliminieren:

http://hunterhacker.github.com/jdom/jdom2/apidocs/org/jdom2/input/sax/package-summary.html

Sie so etwas wie tun sollten Infrastruktur. Diese Setup-Zeit ist für den gesamten Prozess verantwortlich.

Während Sie noch bei 100% sein kann, wird yu Ihr Durchsatz wird wahrscheinlich mehr als doppelt so finden ....