C:始终使用可用的最宽类型会导致执行速度更快吗?

标签 c performance

<分区>

假设

  1. 内存占用不相关

  2. 无需分配非常大的数组(最大数组数 1.000.000 个元素)。

  3. 平台是64位

始终为每个变量使用最广泛的可用类型:


int64_t 用于有符号整数

uint64_t 用于无符号整数

double 用于 float


当不需要 64 位时,执行速度会比使用更小的类型更快吗?

或者会以相同的速度(或更慢)执行并占用更多内存?

最佳答案

我是一名游戏程序员,经常看到有人提倡double或者float。

基本上我学到的是:使用硬件的预期大小“通常”更快,例如,如果硬件需要 64 位整数来进行整数数学运算,则 64 位更快。

“双重”阵营的捍卫者倾向于只使用那个论点。

问题是,对于某些软件,您可能会遇到其他障碍,例如用完缓存、用完管道(如果数据小于其适合的数据,硬件可能会乱序或并行执行例如寄存器)、显式并行操作(MMX、SSE 等)、必须在上下文切换、核心切换等中移动的数据量。

所以我找到的最好的“解决方案”是编写一些测试代码,在设计的硬件中运行它,然后分析结果。

关于C:始终使用可用的最宽类型会导致执行速度更快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107719/

相关文章:

C-一周中的天数排序

C - 线程函数 : Casting a (void*) to a (long) and code works? 但是如何呢?

c - malloc...意外行为c编程

python - 为什么我的优化求解器在 docker 中运行速度较慢?

c++ - 间歇性地没有数据通过 boost::asio/io 完成端口传递

performance - 为什么 AngularFire 比普通的 Firebase API 慢这么多

c++ - 使用 c/c++ 的文件 IO 技巧

c - 头文件中的函数如何链接到 .c 文件?

javascript - 单击下一个弹出窗口时,第一个弹出窗口不会关闭

performance - 数值优化取决于计算机性能吗?