对字边界进行按位运算有什么好处吗?这样做的任何CPU或内存优化?
实际问题: 我正在尝试创建两个结构的XOR。假设结构-1和结构-2都具有相同大小的10000字节。我按原样保留前几百个字节,然后启动1和2的XOR。 让我们说我从302开始。这将一次占用4个字节并进行异或。两种结构的302,303,304和305将被异或。这个循环将重复到10000。
现在,如果我从304开始,是否预期会有任何性能提升?
答案 0 :(得分:4)
是的,使用正确的对齐至少有两个好处:
答案 1 :(得分:3)
过早优化是万恶之源
只需按照简单的方式进行,然后在探查器告诉您重要的情况下对其进行优化。
是的,如果你正确对齐,你会更快。如果你使用SSE2向量XOR指令,你会更快,在正确对齐的情况下,你一次只能做16个字节并且不会污染缓存。并且优化这一点的可能性极小,您应该花时间。
答案 2 :(得分:1)
有些处理器只允许在32位字边界上进行4字节操作(有些只允许在半字边界上进行操作)。
在这些处理器上,非对齐访问会导致处理器异常 - 取决于CPU,操作系统和设置 - 将导致进程崩溃或仅为操作系统执行大量工作。
在其他处理器(例如x86)上,每次操作只需要进行两次读写操作(加上一些移位)即可获得性能。
请参阅link text以查看ARM CPU的问题