为什么整数在NDS上的处理速度比字节快?

时间:2012-07-09 19:25:10

标签: c++ c performance memory-management hardware

我注意到当我用整数替换所有字节实例时,我的nds应用程序运行得更快一些。所有在线示例尽可能地放置u8 / u16实例。为什么会出现这种情况?

2 个答案:

答案 0 :(得分:16)

Nintendo DS使用的主处理器是ARM​​9,一个32位处理器。

参考http://en.wikipedia.org/wiki/ARM9

通常,CPU将在word sizes中进行操作,在本例中为32位。根据您的操作,必须将字节转换为整数或反之亦然可能会对处理器造成额外的压力。这种转换以及可能缺少32位整数值的指令可能导致速度不足。

答案 1 :(得分:7)

与Daniel Li所说的相反,ARM平台上的内存访问必须是字对齐的,即内存提取必须是32位的倍数。从存储器中获取字节变量意味着获取包含相关字节的整个字,并执行所需的逐位操作以使其适合处理器寄存器的最低有效位。

这些额外的指令由编译器自动发出,因为它知道变量的实际对齐方式。