【发布时间】:2011-02-07 12:47:49
【问题描述】:
假设我有两个 char 数组,每个位置都是 1 或 0。 这两个数组是在不同的进程中计算出来的,然后发回一个master进行合并,所以每个数组只写到他们数组的一定范围内:
p1 : [0, 0, 0, 0, 1, 1, 0, 1]
p2 : [1, 0, 1, 1, 0, 0, 0, 0]
目标:[1, 0, 1, 1, 1, 1, 0, 1]
但是,这些可能是非常大的数组。除了循环其中一个之外,有没有一种超级快速的方法?
为了澄清,它们应该是 OR'd。
【问题讨论】:
-
您必须将 0 和 1 作为字符发送吗?在将它们发送给主机之前,您可以将它们打包成整数吗?然后你可以对master中的两个整数进行异或。
-
@Makis,这是一个简洁的微优化,但如果它们是连续的范围,它对大范围毫无帮助 - 你只会浪费很多
x ^ 0和0 ^ x操作。如果每个进程负责的位是交错的,那将是一个好主意。 -
是的,我想我可以使用位数组或整数之类的东西……我只使用了 char,因为它是一个字节,并且实现非常简单。
-
你的问题不是很清楚 - 当你说“合并”时,你只是将这些数组 OR-ing 在一起吗?