C++ 什么是C++;输入“用于最快速度”;对于“周期”而言;?
我想这个网站还没有回答 我做了一个代码,它通过了4个数字的许多组合。数字值从0到51,所以它们可以存储在6位中,也就是1字节中,对吗?我在嵌套循环中使用这4个数字,然后在循环的最低级别中使用它们。那么,那些能够存储至少52个值的C++类型是最快的,用于通过4个嵌套循环迭代?C++ 什么是C++;输入“用于最快速度”;对于“周期”而言;?,c++,performance,types,for-loop,C++,Performance,Types,For Loop,我想这个网站还没有回答 我做了一个代码,它通过了4个数字的许多组合。数字值从0到51,所以它们可以存储在6位中,也就是1字节中,对吗?我在嵌套循环中使用这4个数字,然后在循环的最低级别中使用它们。那么,那些能够存储至少52个值的C++类型是最快的,用于通过4个嵌套循环迭代? The code looks like: for(type first = 0; first != 49; ++first) for(type second = first+1; second != 50; ++seco
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
}
这段代码非常简单,也许还有更好的迭代方法,你也可以帮我 使用标题
中的typedefstd::uint\u fast8\u t
。它应该是至少8位的“最快”无符号整数类型。最快的是底层处理器ALU本机可以使用的任何类型。现在,寄存器可以以多种格式寻址。在这种情况下,所有这些格式都同样快
<>这是特定于处理器架构的,而不是C++特定的。
如果您正在使用现代PC处理器,那么对于for循环,int与其他任何东西一样快
在嵌入式系统中有更多的事情要考虑。变量是否存储在对齐的位置 在大多数机器上,
int
是最快的整数类型。在我使用的所有计算机上,int
比unsigned
快,比signed char
快得多
另一个问题,也许是一个更大的问题,是你如何处理这些数字。你没有显示代码,所以没办法知道。如果希望first*second
生成期望的整数值,请使用int
还有一个问题是,您希望此代码的可移植性有多广。将被移植到许多不同体系结构、不同编译器的代码与将在有限和受控环境中使用的代码之间存在着巨大的区别。如果是后者,请编写一些基准测试,并使用基准测试性能最佳的类型。如果你写的是供广泛使用的东西,问题就更难了。我认为
int
将比char
快。你是说你只需要更改32位int的4个字节?我认为您的代码使用1 int表示4个循环。空间优化:)我有一个更大的速度问题的子集。对我来说,int
比uint\u fast32\u t
快,比size\u ti
快。你可以通过每指令做更多的工作来获得更快的速度,阿拉SIMD。原则上,编译器可以进行矢量化,但通常您需要自己进行。我怀疑这可能会提供最快的8位类型,而不是最快的总体类型。允许它给出更宽的类型,但可能只有在根本没有8位类型的情况下才会这样做。@BoPersson:根据ISO/IEC 9899,它“指定一个整数类型,在所有至少具有指定with的整数类型中,该类型通常是最快的操作。”应该是,但不是,至少在我的计算机上不是。一个<代码> int 远远快于一个<代码>符号char < />代码,但是<代码> INTHOFAS88T 被类型化为<代码>符号char < /代码>,而不是作为<代码> int >代码>。我们还必须考虑“通常最快”。如果我们有一个8位值的数组,它可能比使用<代码> int <代码>更快,因为缓存效果。请不要考虑缓存效果,我只运行一次(仅几次),并将结果保存到文件中。