gpt4 book ai didi

c++ - 位移效率

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:33 24 4
gpt4 key购买 nike

短整型或字节上的位移(至少 1 个位置)是否比整数上的位移(对于 AMD64 或 x86 架构)更快(需要更少的 CPU 周期)?我怀疑答案是否定的,因为在这两种情况下将使用相同的 32 位或 64 位 CPU 指令,并且两者将占用相同数量的时钟周期。是真的吗?

最佳答案

这取决于。一般来说,如果你有一个 N 位处理器,那么很可能任何高达 N 位的东西都需要相同的时间来移位,更大的变量需要更长的时间。如果您对字节进行操作,但想确保使用大小合适的整数以提高速度,请使用 uint_fast8_t 类型。

但是:如果您在循环中进行位移,那么编译器可能会向量化您的代码。如果你有一个带有 SSE2 指令的处理器,它可以在一条指令中进行 8 次 16 位移位。如果您有 AVX 甚至 AVX512,那么它可以在一条指令中执行 16 次甚至 32 次 16 位移位。然而,这是否比使用常规指令更有效取决于将许多变量加载到 SSE 寄存器中的难易程度,以及您是否除了对它们进行位移之外还进行了更多操作。

查看编译器的汇编程序输出很有启发意义(例如,使用 gcc -save-temps 编译您的程序并查看生成的 .s文件)。请注意,选择的优化级别对生成的汇编程序有非常大的影响。

确定最快变量大小的最佳方法就是对其进行测量。

关于c++ - 位移效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984565/

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