什么C++类型用于最快的"for cycles"?
What C++ type use for fastest "for cycles"?
我想这个网站还没有回答。
我做了一个代码,它可以通过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
是最快的整数类型。在我使用的所有计算机上,int
比unsigned
快,明显比signed char
快。
另一个问题,也许是一个更大的问题,是你对这些数字做了什么。你没有显示代码,所以无从得知。如果希望first*second
产生预期的整数值,请使用int
。
另一个问题是,你希望这种代码的可移植性有多广。将移植到许多不同体系结构、不同编译器的代码与将在有限和受控的环境中使用的代码之间有着巨大的区别。如果是后者,请编写一些基准测试,并使用基准测试表现最好的类型。如果你写的东西是为了广泛消费,那么问题就更难了。
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- 调用专用模板时出错"no matching function for call to [...]"
- 为什么我的for循环不能正确获取argv
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- Python中的for循环与C++有何不同
- std::memory_order for std::atomic:<T>:wait
- 在更改for循环的第三部分后,未使用for循环结果
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 什么C++类型用于最快的"for cycles"?