【发布时间】:2009-11-17 17:27:56
【问题描述】:
我们已经开始编译部分应用程序的 32 位和 64 位版本。我项目中的一个人鼓励我们将所有 32 位整数转换为它们的 64 位等效值,即使这些值保证适合 32 位空间。例如,我有一个保证永远不会超过 10,000 的值,我将其存储在一个无符号整数中。他的建议是将其切换为 size_t 以便它在 64 位环境中扩展到 64 位,即使我们永远不需要额外的空间。他说使用 64 位变量将加速应用程序,而不管每个变量中存储的值如何。他是对的吗?结果证明工作量很大,如果它实际上没有任何作用,我并不急于付出努力。
我们使用的是 Microsoft Visual C++ 2008。不过,我有点希望得到一个更通用、独立于平台的答案。
那你怎么看?出于性能原因而不是范围原因,我们花时间更改数据类型是否正确?
【问题讨论】:
-
你为什么不写一个基准测试一下?
-
@Amuck,+1 只是尝试并找出答案。
-
我喜欢基准测试的想法,只要我希望通过更改所有这些代码来避免浪费我的时间。
-
如果这会导致加速并且可能会导致您的代码运行速度变慢,我会感到惊讶 - 内存带宽仍然是一个限制因素。通过全面采用 64 位整数而不是 32 位,您增加了需要通过总线移动的内存量并增加了缓存未命中的机会。
-
int 类型应该是(根据语言定义)编译器上最有效的整数类型。为什么不检查 sizeof(int) 的结果是什么。
标签: c++ integer performance