什么C++类型用于最快的"for cycles"?

What C++ type use for fastest "for cycles"?

本文关键字:for cycles C++ 类型 用于 什么      更新时间:2023-10-16

我想这个网站还没有回答。

我做了一个代码,它可以通过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 
   }

这段代码非常简单,也许还有一种更好的迭代方式,你也可以帮助我。

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

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

因此,这变得非常特定于处理器体系结构,而不是特定于C++。如果你在现代的PC处理器上工作,那么对于for循环来说,int和其他任何东西一样快。

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

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

另一个问题,也许是一个更大的问题,是你对这些数字做了什么。你没有显示代码,所以无从得知。如果希望first*second产生预期的整数值,请使用int

另一个问题是,你希望这种代码的可移植性有多广。将移植到许多不同体系结构、不同编译器的代码与将在有限和受控的环境中使用的代码之间有着巨大的区别。如果是后者,请编写一些基准测试,并使用基准测试表现最好的类型。如果你写的东西是为了广泛消费,那么问题就更难了。