0

我认为这个网站上还没有回答。

我做了一个代码,它经历了 4 个数字的许多组合。数值是从 0 到 51,所以它们可以存储在 6 位中,所以在 1 字节中,对吗?我在嵌套循环中使用这 4 个数字,然后在循环的最低级别使用它们。那么从那些可以存储至少 52 个值的 c++ 类型中,哪种 c++ 类型对于迭代 4 个嵌套 for 循环是最快的呢?

The code looks like: 
for(type first = 0; first != 49; ++first)
 for(type second = first+1; second != 50; ++second)
  for(type third = second+1; third != 51; ++third)
   for(type fourth = third+1; fourth != 52; ++fourth) {
    //using those values for about 1 bilion bit operations made in another for cycles 
   }

该代码非常简化,也许这种迭代还有更好的方法,您也可以帮助我。

4

3 回答 3

1

std::uint_fast8_t使用标头中的 typedef <cstdint>。它应该是至少 8 位的“最快”无符号整数类型。

于 2012-09-09T09:45:17.960 回答
0

最快的是底层处理器 ALU 可以原生使用的任何东西。现在寄存器可以以多种格式寻址。在这种情况下,所有这些格式都同样快。

所以这变得非常特定于处理器架构而不是特定于 C++。如果您正在使用现代 PC 处理器,那么对于您的 for 循环,int 与其他任何东西一样快。

在嵌入式系统上,需要考虑的事情更多。例如。变量是否存储在对齐的位置?

于 2012-09-09T10:31:10.023 回答
0

在大多数机器上,int是最快的整数类型。在我使用的所有计算机上,int都比 快unsigned,明显快于signed char

另一个问题,也许是更大的问题,是您对这些数字所做的事情。你没有显示代码,所以没有办法告诉。int如果您希望first*second产生预期的积分值,请使用。

另一个问题是您希望此代码具有多广泛的可移植性。将移植到许多不同架构、不同编译器的代码与将在有限和受控环境中使用的代码之间存在巨大差异。如果是后者,请编写一些基准测试,并使用基准测试表现最佳的类型。如果您正在为广泛消费而编写一些东西,那么问题就有点棘手了。

于 2012-09-09T10:54:03.907 回答