gpt4 book ai didi

c - 64 位整数的按位运算成本与 8 位整数相同吗?

转载 作者:行者123 更新时间:2023-11-29 08:30:20 24 4
gpt4 key购买 nike

我的代码涉及对大量整数进行按位运算。如果理解正确的话,64 位计算机在一个时钟周期内对 64 位整数进行计算。如果我在做一个8位整数的按位运算,它仍然消耗1个时钟周期。如果我做8个8位整数运算,就会消耗8个时钟周期。知道我可以将八个 8 位整数放入一个 64 位整数,并对 64 位整数进行按位运算,我会消耗 1 个时钟周期而不是 8 个时钟周期吗?

最佳答案

即使在64位机器上,64位操作所占用的时钟周期数也不能保证为1,但显然处理器不知道64位值代表一个64位还是八个 8 位整数,因此对于这两种情况,按位运算本身都一样快。 这部分代码对于单个 64 位值几乎肯定也会执行得更好,因为 64 位处理器可能在 64 位(或至少 32 位)数量上工作,即使您对较小的变量进行操作。

对于程序的整体性能,很大程度上取决于您需要在 8 位和 64 位数据之间转换的频率;存储在 64 位整数数组中的单个 8 位整数的典型索引类似于 (a[i/8] >> ((i % 8) * 8)) & 0xFF - 所以至少在 C 端† 如果经常这样做会增加复杂性,但如果你的大部分操作都对数组的所有元素重复,那么 64 位解决方案很可能会获胜(记住编译器无论如何,在处理 8 位变量时可能必须生成类似的掩码)。

† 您可能希望查看生成的汇编程序以验证实际的复杂性,它可能看起来完全不同,具体取决于指令集......

关于c - 64 位整数的按位运算成本与 8 位整数相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28555013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com