可以在0的1上更快地求和吗?

Iro*_*fly 2 c parallel-processing bit-manipulation

我有一个非常大的数组(例如1000万个元素),它只包含1和0.我也有一堆并行线程(例如10),我想将这个大型数组块分成不同的线程,并使每个线程对它们负责的部分求和.

我使用"+"运算符编写了C&pthreads中的问题.但是,由于数组只包含1和0,我想知道有没有更快的方法来实现这个求和?(通过按位运算符,移位等?)由于我处理的是非常大的数组,因此天真的求和会破坏性能.

abe*_*nky 6

你在现代的CPU上添加了2个1000万个元素的数组......每秒可以执行大约3亿个指令(3GHz).

即使必须单独添加每个元素,也可以在0.003秒内添加两个完整的数组.(这确实是最糟糕的情况.在64位机器上,你应该能够一次添加64个元素)

除非在内循环中发生这种情况,否则这不应该会破坏性能.

考虑更全面地描述您的问题,并显示您当前的实现.

  • C如果经常用于某些特殊设备上的嵌入式编程.因此,处理器可能比这慢得多.恕我直言,问题者应向我们解释这一点. (2认同)