C - OR两个位图的最快方法

时间:2017-07-18 02:36:53

标签: c algorithm bit-manipulation bitwise-operators

与此问题非常相似:C fastest way to compare two bitmaps

但是我想要一个返回的位图(一个0/1值的文字序列很可能用char *表示),它们是两个的按位OR?这里没有任何记忆似乎有意义吗?

位图保证大小相同。我还希望存储按位OR的结果,因此需要可以访问生成的位图。位图的大小为10 ^ 5字节。

long * a = (long *) getByteBufferData();
long * b = (long *) getByteBufferData(); //these return different pointers
for(int i = 0; i < SystemByteSize , i++){
 a[i] = a[i] | b[i];
}

1 个答案:

答案 0 :(得分:2)

如果修复了循环限制(缓冲区的字节大小/ sizeof length)并确保缓冲区为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-lg-6 s_panel"> <div class="cont"> <!-- 1st div content --> </div> </div> <div class="col-lg-6 s_panel"> <div class="grid-stack"> <!-- Gridstack content --> </div> </div> - 对齐,则可以确保编译器可以很好地优化它。对于x86,即使旧版本的gcc也会一次使用SSE指令long 16个字节。

在C中编写函数的简明方法是:

or

Here's gcc 4.8 output at -O4。使用针对特定处理器的手工编写的汇编语言可能会做得更好,但不是很多。