在单词边界上执行按位操作有什么优势吗?在此过程中是否对CPU或内存进行了优化?
实际问题:我正在尝试创建两个结构的XOR。假设structure-1和structure-2的大小都是相同的10000字节。我保留了最初的几百个字节,然后开始1和2的XOR运算,假设我从302开始。这将一次占用4个字节并进行XOR运算。两个结构的302、303、304和305将是XORed。这个循环将重复到10000。
现在,如果我从304开始,预计会有什么性能改进吗?
发布于 2009-12-20 15:39:02
是的,使用正确的对齐方式至少有两个优点:
发布于 2009-12-20 15:05:55
过早优化是所有邪恶的根源
只需直接使用它,如果分析器告诉您它很重要,则对其进行优化。
是的,如果你对齐正确,你会走得更快。如果您使用SSE2向量异或指令,速度会更快,如果正确对齐,您将一次执行16个字节,并且不会污染缓存。而且你不太可能把时间花在优化这一点上。
发布于 2009-12-20 15:43:06
有些处理器只允许在32位字边界上进行4字节操作(有些处理器只允许在半字边界上进行操作)。
在这些处理器上,非对齐访问会导致处理器异常,这取决于CPU、操作系统和设置,它将导致进程崩溃或操作系统的大量工作。
在其他处理器(例如x86)上,每个操作必须进行两次读写(外加一点移位),这只会对性能造成影响。
有关ARM CPU的问题,请参阅link text
https://stackoverflow.com/questions/1935079
复制相似问题