TextFieldParser-äquivalent in .NET?
Ist es modern .NETTO entspricht das TextFieldParser
class in VB6? Die Leistung ist viel geringer, als bei einem einfachen String.Split()
- Was meinst du, die Leistung ist viel niedriger? Haben Sie gemessen?
- I dont get it ..
TextFieldParser
ist Teil der .NET-Bibliothek - L ja-zuerst habe ich gelesen benchmark hier dotnetperls.com/textfieldparser und nach, dass ich benchmarkered von mir, die Ergebnisse zu sehen, ist auch um ein Vielfaches geringer.
- ist Teil der alten VisualBasic es ist also ein wrapper für .NET, wenn ich bin nicht falsch, wie Links, Recht, und die alte VB-Methoden
- Nein, es ist in
Microsoft.VisualBasic.FileIO
- nicht die Kompatibilität Schicht. msdn.microsoft.com/en-us/library/... ich habe gesehen, dass der benchmark vor und keine Zweifel - ich bin sicher, dass die Klasse ist eine Art wrapper wieMid
undLeft
sind und so weiter. - Wollen Sie zu Lesen, die csv-Datei? Oder Sie verwenden möchten, simw moderne Klasse?
- einige >100K Kerl hat einen Kommentar vor kurzem, dass das Parsen Wird mit String.Split war böse/blöd/schlecht, aber nie erweitert auf alternativen um. Ich bezweifle
TextFieldParser
war die Antwort, weil jeder weiß, es ist langsam und da ist es in einer VB-Raum, es ist eines dieser high-level-Dinge, die für den weniger erfahrenen (wohl). - Yudanov ich weiß, wie Sie sowohl die Split-Methode und TextFieldparser, Nur ich möchte wissen, ob es eine moderne/schneller .NET-alternative Klasse als die langsamer TextFieldParser, aber niemand sagte nichts darüber, dass, so denke ich, nicht existieren.
- .Net
TextFieldParser
ist nicht ein wrapper für einige VB6-Zeugs. Es ist auch nicht langsam, weil es in derMicrosoft.VisualBasic
(das ist einfach nur albern). Es ist langsamer als eine einfacheString.Split
weil es eigentlich Parsen der CSV-Daten (und respektiert Zitate und espacing Anführungszeichen). Jeder richtige Parsen von CSV-Daten wird langsamer sein alsString.Split
. Wenn Sie sich für eine leistungsstarke Analyse-Bibliothek, dem empfehle ich FileHelpers. - Ich werde die Abstimmung zu schließen, ist diese Frage off-topic, denn die Frage basiert auf falschen Annahme aus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich im Vergleich die Leistung mit diesem code: https://gist.github.com/Ruszrok/7861319
Ich eine input-Datei mit über 1 000 000 Datensätze durch Leerzeichen getrennt. Ich habe versucht fünf Experimente.
String.Split
avg time: 291 msMicrosoft.VisualBasic.FileIO.TextFieldParser
avg time: 15843 msKönnen Sie die
Microsoft.VisualBasic.FileIO.TextFieldParser
Klasse. ReferenzMicrosoft.VisualBasic
. Beispiel im gist.string.Split
test code liest nur eine Zeile und Spalten durch Leerzeichen in der Erwägung, dass dieTextFieldParser
hat zu Lesen und Parsen der gesamten Datei. Natürlich dauert einige Millisekunden mehr. Aber der ganze Vergleich ist Unfug. Verwenden Sie das richtige Werkzeug für einen job. EinTextFieldParser
ist viel leistungsfähiger als eine einfacheString.Split
wenn Sie echte csv-Daten (f.e. wenn die Felder eingeschlossen sind, die mit Anführungszeichen).Dies ist meine Lösung:
Einer einfachen Sitzung: