缩短性能时间

时间:2015-10-28 15:02:38

标签: vb.net

  'Check if the file has any broken records
        Dim reader As StreamReader = New StreamReader(fileDirectory)
        Dim fileLine As String
        Dim stopCheck As Boolean = False

        Do While reader.Peek() > -1
            fileLine = reader.ReadLine()

           'If the line is not start with eCW| then it is a broken record
            If Not fileLine.StartsWith("eCW|") Then
                stopCheck = True
                Exit Do
            End If
        Loop

        reader.Close()

        If stopCheck Then

当文本文件包含许多记录时,需要很长时间来验证行。

离。 文件1有500,000条已完成的记录。它将循环遍历所有行,直到它关闭程序。

文件2在文本文件末尾有一个损坏的记录。它必须在找到损坏的记录之前遍历所有行。

有没有办法加快验证过程?

2 个答案:

答案 0 :(得分:1)

消除fileLine变量的使用将消除每次迭代的内存分配。

    Do While reader.Peek() > -1
       'If the line is not start with eCW| then it is a broken record
        If Not reader.ReadLine().StartsWith("eCW|") Then
            stopCheck = True
            Exit Do
        End If
    Loop

由于字符串是不可变的,因此每次更改字符串时都会发生内存分配。 Link除此之外,我认为您的方法很棒 - 一旦添加了Using语句,就可以了。

答案 1 :(得分:1)

只是把它放在这里但是......

   try
       while not reader.readline().startswith("eCWL")
       end while
       stopCheck = true
    catch
       stopCheck = false
    end try

我猜测当你尝试阅读超出eof时捕获读取异常将是非常值得的,不需要为每条记录进行查看和读取