0

私は単純なウイルス スキャナーを開発中で、次の機能の速度向上を探していました。

Public Function FindAInB(ByRef byteArrayA() As Byte, ByRef byteArrayB() As Byte) As Integer
    Dim startmatch As Integer = -1
    Dim offsetA As Integer = 0
    Dim offsetB As Integer = 0

    For offsetB = 0 To byteArrayB.Length - 1
        If byteArrayA(offsetA) = byteArrayB(offsetB) Then
            If startmatch = -1 AndAlso offsetB < byteArrayB.Length - 8 Then
                startmatch = offsetB
            End If
            offsetA += 1
            If offsetA = byteArrayA.Length Then
                Exit For
            End If
        Else
            offsetA = 0
            startmatch = -1
        End If
    Next
    Return startmatch
End Function

選択したファイルのバイトで約 7800 バイトの配列を検索しているため、超高速にする必要があります。説明するのは難しいですが、上記のコードに代わるもの、またはそれを高速化する方法はありますか?

前もって感謝します!

4

1 に答える 1

1

Boyer-Mooreなどの文字列検索アルゴリズムを確認する必要があります。

実際にテキストを検索しているわけではありませんがより大きなバイト文字列内のバイト文字列を検索しているため、これらのタイプのアルゴリズムはかなり役立ちます。

于 2011-02-09T17:40:13.607 に答える