【发布时间】:2019-10-06 04:47:58
【问题描述】:
我正在检查一个字节数组是否包含另一个带有此代码的字节数组:
private int IndexOf(int index, byte[] AllBytes, byte[] searchByteArray)
{
for (int i = index; i <= AllBytes.Length - 1 - searchByteArray.Length - 1; i++)
{
for (int j = 0; j <= searchByteArray.Length - 1; j++)
{
if (AllBytes[i + j] == searchByteArray[j])
{
if (j + 1 == searchByteArray.Length)
return i;
}
else
break;
}
}
return -1;
}
这很完美,我得到了第一个字节的索引。
但问题是我想检查非常大的数据。
我的“大”数组包含大约 900000000 个字节,而我的 searchArray 大约包含 10-20 个字节。这样,我的功能非常非常慢。有没有办法让性能更好?
谢谢。
【问题讨论】:
-
这在SO这里太宽泛了,所以我认为你在Code Review有这样的问题会更好。
-
方法有很多。这是一个string search,有几种不同的算法可以实现不同的权衡。
标签: c# arrays optimization