Ассемблер x86, который вы хотите сгенерировать компилятором, равен для сравнения (pcmpeqb
), pmovmskb
или movmskps
(вектор в битовую маску с 1-байтовыми или 4-байтовыми элементами), а затем, если маска ненулевая, выполняется сканирование для первого установленного бита (bsf
или tzcnt
).
Это будет более эффективно, чем произведение целочисленных точек !!
У вас уже есть сравнение для равных, и я думаю, что я видел другие C # Q & As с внутренним свойством vector-> bitmap.Если кто-то хочет отредактировать этот ответ или опубликовать свой собственный с помощью C #, который компилирует / JIT для этого ассемблера, сделайте это.Я не знаю C #, я просто здесь для SIMD x86.