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

Joh*_*Liu 6 c c++ hardware performance memory-management

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

Dan*_* Li 16

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

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

                    

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


lve*_*lla 7

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

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