首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于XOR运算的4字节字对齐

用于XOR运算的4字节字对齐
EN

Stack Overflow用户
提问于 2009-12-20 14:58:37
回答 3查看 970关注 0票数 0

在单词边界上执行按位操作有什么优势吗?在此过程中是否对CPU或内存进行了优化?

实际问题:我正在尝试创建两个结构的XOR。假设structure-1和structure-2的大小都是相同的10000字节。我保留了最初的几百个字节,然后开始1和2的XOR运算,假设我从302开始。这将一次占用4个字节并进行XOR运算。两个结构的302、303、304和305将是XORed。这个循环将重复到10000。

现在,如果我从304开始,预计会有什么性能改进吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-20 15:39:02

是的,使用正确的对齐方式至少有两个优点:

  1. 可移植性。并非所有处理器都支持未对齐的数字。为了获得最大的可移植性,您应该仅使用完全对齐(即,N字节整数开始于N的倍数的地址)数字
  2. 速度。AFAIK,即使是支持未对齐数字的处理器,使用对齐数字也会更快。
票数 4
EN

Stack Overflow用户

发布于 2009-12-20 15:05:55

过早优化是所有邪恶的根源

只需直接使用它,如果分析器告诉您它很重要,则对其进行优化。

是的,如果你对齐正确,你会走得更快。如果您使用SSE2向量异或指令,速度会更快,如果正确对齐,您将一次执行16个字节,并且不会污染缓存。而且你不太可能把时间花在优化这一点上。

票数 3
EN

Stack Overflow用户

发布于 2009-12-20 15:43:06

有些处理器只允许在32位字边界上进行4字节操作(有些处理器只允许在半字边界上进行操作)。

在这些处理器上,非对齐访问会导致处理器异常,这取决于CPU、操作系统和设置,它将导致进程崩溃或操作系统的大量工作。

在其他处理器(例如x86)上,每个操作必须进行两次读写(外加一点移位),这只会对性能造成影响。

有关ARM CPU的问题,请参阅link text

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1935079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档