我正在比较两个向量using System.Runtime.Intrinsics
,并想知道仅获取所有匹配索引的最快方法。
此刻我的代码如下:
static void CompareVectors(Vector128<byte> first, Vector128<byte> second)
{
var matches = Avx2.MoveMask(Avx2.CompareEqual(first, second));
if (matches == 0) return;
var firstIndex = BitOps.TrailingZeroCount(matches) / sizeof(byte);
for (var j = firstIndex; j < Vector128<sbyte>.Count; j++)
{
var matchingValue = first.GetElement(j);
//do stuff
}
}
问题:
如果第一个索引匹配,即使仅第一个索引匹配,它也会迭代向量中的所有元素。
我怎样才能获得所有匹配的索引,只是为了加快速度?