gpt4 book ai didi

c++ - 为什么 uint32_t 与 uint64_t 速度不同?

转载 作者:搜寻专家 更新时间:2023-10-31 01:46:54 27 4
gpt4 key购买 nike

试图了解 g++/cpu 在运行时如何处理整数。

我正在测量以下函数的运行时间:

template<class T>
void speedTest() {
for(T d=0;d<4294967295u;d++)int number;
}

这个简单的方法将多次运行 uint32_t 的最大值的哑循环

当我打电话时:

speedTest<uint32_t>();

该软件平均需要 8.15 秒,但当我调用时:

speedTest<uint64_t>();

软件平均耗时 10.35 秒。

为什么会这样?

最佳答案

一些可能的原因:

  • 一般来说,较大的数据类型需要更多的内存带宽
  • 即使该循环计数器保存在一个寄存器内,CPU 也可能会花费更多时间来计算较大的值,尤其是当它需要多个寄存器时(例如,如果您的 CPU 只有 32 位宽的寄存器)
  • 编译器需要发出额外的机器指令来模拟 CPU 不直接支持的任何类型
  • 这也取决于优化。无论int number;如何,都可以完全优化这种没有副作用的循环。 (可能只是 for(T d=0;d<4294967295u;d++); )

您可以通过提供一些组件来继续您的调查/练习。

关于c++ - 为什么 uint32_t 与 uint64_t 速度不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20031684/

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