2012-04-05 6 views
0

So zu verbessern i diesen Code hat:Ways XML Verschmelzungsprozess Zeit

 foreach (string xmlfilelisted in xmlFileList) 
     { 
      resultXml.Root.Add(XDocument.Load(xmlfilelisted).Root.Elements()); 
      resultXml.Save(filepath); 
     } 

Dies ist im Grunde eine große Anzahl von gleichen Format XML-Dateien zu verschmelzen. Jetzt verarbeitet dies etwa 1300 Dateien in einer Minute und der Hälfte. Ich möchte 200k Dateien verarbeiten. Wie gehe ich da vor? Natürlich ist der obige Code nicht praktikabel.

Alle Links oder Schnipsel würden geschätzt werden. Danke Leute!

+1

Ich bin nicht genug ein IO-Experte, um dies zu beschleunigen, aber ich weiß, dass immer IO-Betrieb wird die Dinge verlangsamen, und Sie tun es zweimal pro Schleife. Wenn Sie den 'Save'-Methodenaufruf außerhalb der Schleife aufrufen und nur einmal ausführen, sparen Sie sich Zeit. – psubsee2003

+0

Verdammt, das wäre es! Ich werde das als einen weiteren blonden Moment für mich niederschreiben. Vielen Dank! –

+0

Wenn das genug Antwort für Sie ist, werde ich meinen Kommentar als Antwort setzen – psubsee2003

Antwort

2

Versuchen Sie, Ihren Save() Methodenaufruf außerhalb der Schleife zu verschieben. Sie müssen nur über Ausnahmen besorgt sein, die alle Ergebnisse wegwerfen, also können Sie vielleicht die Save() innerhalb eines finally Blockes setzen.

+0

Wäre es möglich, die Dinge weiter zu beschleunigen? –

+0

@ShoaibMohamed Da Sie eine Datei jedes Mal durch die Schleife lesen, ist der Engpass wahrscheinlich die IO-Operation und das ist abhängig von der Geschwindigkeit Ihrer Festplatte (oder Netzwerkverbindung, wenn Sie die Datei herunterladen). Es ist unpraktisch angesichts der Anzahl der Dateien, aber die einzige Möglichkeit, die Schleife zu beschleunigen, besteht darin, zuerst alles in den Speicher einzulesen und dann zusammenzuführen, aber das spart nicht wirklich Zeit, da Sie immer noch die Datei. – psubsee2003

+0

Ich stimme zu, es wird wahrscheinlich keinen signifikanten Unterschied machen. –