gpt4 book ai didi

c++ - 二进制数组的快速 Popcount 指令或汉明距离?

转载 作者:行者123 更新时间:2023-11-30 00:55:53 27 4
gpt4 key购买 nike

我在 Visual Studio 2010 C++ 上实现

我有两个二进制数组。例如,

array1[100] = {1,0,1,0,0,1,1, .... }
array2[100] = {0,0,1,1,1,0,1, .... }

计算Hamming distancearray1array2 之间,array3[100] 存储array1array2xor 结果。

然后我必须计算 array31 的位数。为此,我知道我可以使用 __popcnt 指令。

现在,我正在做类似下面的事情:

popcnt_result = 0;
for (i=0; i<100; i++) {
popcnt_result = popcnt_result + __popcnt(array3[i]);
}

显示效果不错,但速度较慢。我怎样才能让它更快?

最佳答案

array3 似乎有点浪费,您正在访问不需要的额外 400 字节内存。我会尝试将您拥有的与以下内容进行比较:

for (int i = 0; i < 100; ++i) {
result += (array1[i] ^ array2[i]); // could also try != in place of ^
}

如果这有帮助,那么我将它作为练习留给读者如何应用此更改 duskwuff 的。

关于c++ - 二进制数组的快速 Popcount 指令或汉明距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11336802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com