标题说明了所有。我目前的版本是:
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
更快。出于这个原因,我开始分析我的功能的性能。
答案 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