Announcement

Collapse
No announcement yet.

TextfieldParser Performance

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TextfieldParser Performance

    Hallo,
    ich habe eine Frage zum TextfieldParser.

    Mit folgender Prozedur lese ich eine Datei in eine Arraylist ein.

    Code:
        Sub LoadSettings(ByVal Path As String)
            DescriptionList.Clear()
            If Path <> Nothing Then
                Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser( _
                  Path)
                    MyReader.Delimiters = New String() {","}
     
                    While Not MyReader.EndOfData
                        Try
                            currentRow = MyReader.ReadLine()
                            SettingsList.Add(currentRow)
                        Catch ex As _
                          Microsoft.VisualBasic.FileIO.MalformedLineException
                            MsgBox("line " & ex.Message & "is invalid.")
                        End Try
                    End While
                End Using
                ServerEnd = False
                ConnectAll()
            End If
        End Sub
    macht es jetzt einen Geschwindigkeitsunterschied ob ich die Datei erst komplett in die Liste einlese und dann die eingelesenen Daten verarbeite, oder ob ich sie direkt nach dem Einlesen einer Zeile verarbeite?

    Ich dachte mir es ist am sinnvollsten die Verbindung zur einzulesenden Datei möglichst kurz zu halten und daher das Einlesen in die Liste.

    Ist das wirklich so oder ist das mit der Liste absoluter Blödsinn?


    Gruß Stumpi

  • #2
    Wird wohl von der Größe der Datei abhängen.....
    Christian

    Comment


    • #3
      Hallo,

      es kommt darauf an wie groß die zu lesende Datei ist. Wenn sie riesig ist wird sie kaum im Speicher gehalten werden können und dann ist zeilenweises (besser wäre noch irgendwie blockweise - mehrere Zeilen lesen, verarbeiten, ...) die einzige Alternative.

      Ist die Datei klein genug kann sie am effizientesen mit System.Io.FileReadAllLines gelesen werden. Dann erhälst du ein String-Array mit den Zeilen das weiterverarbeitet werden kann.

      Bei Optimierungen kann keine allgemein gültige Aussage getroffen werden denn es hilft nur eines: Testen bzw. Probieren und die Zeiten messen.


      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment


      • #4
        Die Datei ist relativ klein
        das ist kein problem.

        das verarbeiten dauert mitunder allerdings sehr lange (bis zu 1minute)

        ist es da sinnvoll die Verbidung zur Datei so lange aufrecht zu erhalten?

        Comment


        • #5
          Originally posted by stumpi_8
          Die Datei ist relativ klein
          Siehe obigen Beitrag:
          Originally posted by gfoidl
          Ist die Datei klein genug kann sie am effizientesen mit System.Io.FileReadAllLines gelesen werden. Dann erhälst du ein String-Array mit den Zeilen das weiterverarbeitet werden kann.

          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            wenn du die Datei nach dem Auslesen nicht mehr benötigst ist es sinvoller die Verbindung zu kappen.

            Comment


            • #7
              Ok Vielen dank für die Antworten.

              Comment

              Working...
              X