0

在字边界上进行按位运算有什么优势吗?这样做有任何 CPU 或内存优化吗?

实际问题:我正在尝试创建两个结构的 XOR。假设结构 1 和结构 2 的大小都为 10000 字节。我保留前几百个字节,然后开始 XOR 1 和 2。假设我从 302 开始。这将一次占用 4 个字节并进行 XOR。两个结构的 302、303、304 和 305 将被异或。此循环将重复直到 10000。

现在,如果我从 304 开始,是否有预期的性能改进?

4

3 回答 3

4

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

  1. 可移植性。并非所有处理器都支持非对齐数字。为了获得最大的可移植性,您应该只使用完全对齐的(即一个 N 字节整数从一个 N 的倍数的地址开始)数字
  2. 速度。AFAIK,即使是支持非对齐数字的处理器,对齐数字仍然更快。
于 2009-12-20T07:39:02.480 回答
3

过早的优化是万恶之源

只需以简单的方式进行操作,然后在您的分析器告诉您它很重要时对其进行优化。

是的,如果你正确对齐,你会走得更快。如果您使用 SSE2 向量 XOR 指令,您会走得更快,如果正确对齐,您将一次执行 16 个字节并且不会污染缓存。并且极不可能优化这个是你应该花时间的地方。

于 2009-12-20T07:05:55.213 回答
1

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

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

在其他处理器(例如 x86)上,您只会获得每次操作必须执行两次读取和写入(加上一些移位)的性能损失。

查看链接文本以查看 ARM CPU 的问题

于 2009-12-20T07:43:05.640 回答