最快的方式来检索bitArray部分

时间:2017-11-13 13:34:28

标签: vb.net bitarray

标题说明了所有。我目前的版本是:

Public Function GetBitArrayPart(ByVal BitArray As BitArray, _
                                ByVal IndexStart As Integer, _
                                ByVal IndexEnd As Integer) As BitArray

    If IndexStart < 0 OrElse IndexEnd > BitArray.Length - 1 OrElse IndexEnd < IndexStart Then
        Return New BitArray(0)
    End If

    Dim i As Integer
    Dim outputBA As New BitArray(IndexEnd - IndexStart + 1)

    For i = 0 To outputBA.Length - 1
        outputBA(i) = BitArray(IndexStart + i)
    Next

    Return outputBA

End Function

我必须指定查找bitAarrays的大小很大。我不明白为什么使用System.String存储相同数量的信息来检索该字符串的一部分比使用BitArray更快。出于这个原因,我开始分析我的功能的性能。

1 个答案:

答案 0 :(得分:0)

我不确定它会更快,但这是一个基于复制到数组的实现并从中创建一个新的BitArray:

Public Function GetBitArrayPart(ByVal BitArray As BitArray, _
                        ByVal IndexStart As Integer, _
                        ByVal IndexEnd As Integer) As BitArray

    If IndexStart < 0 OrElse IndexEnd > BitArray.Length - 1 OrElse IndexEnd < IndexStart Then
        Return New BitArray(0)
    End If

    Dim arr as Boolean()
    BitArray.CopyTo(arr, 0)
    Return new BitArray(arr.Skip(IndexStart).Take(IndexEnd - IndexStart).ToArray())

End Function