执行%/ * + - 操作所花费的时间

时间:2013-08-24 09:41:33

标签: time operators

最近,我听说%运营商的时间成本很高。

所以,问题是,有没有办法更快地找到余数?

如果有人能分辨出%/ * + - 操作的执行情况,我们也将不胜感激。

2 个答案:

答案 0 :(得分:0)

不,编译器将以最有效的方式实现%。

就速度而言,+和 - 是最快的(同样快速,通常由相同的硬件完成)。

*,/和%慢得多。乘法基本上是通过您在小学阶段学习的方法完成的 - 将第一个数字乘以第二个数字中的每个数字并添加结果。通过二进制可以实现一些黑客攻击。截至几年前,乘法比增加慢3倍。分区应该类似于倍增。余数类似于除法(实际上它通常一次计算两者)。

确切的差异取决于CPU类型和确切的模型。您需要查找特定计算机的CPU规格表中的延迟。

答案 1 :(得分:0)

在某些使用2次幂除数的情况下,您可以使用自己动手来计算余数的方法做得更好,但通常情况下,中等体面的编译器可以使用可变除数来做到最好,或者“奇怪的“除数不适合任何模式。

请注意,有些CPU甚至没有乘法运算,因此(在那些上)乘法相对于add非常慢(对于32位乘法至少为64x)。 (但是如果乘数是文字的话,智能编译器可能会对此进行改进。)稍大一些的数字没有除法运算或者速度很慢。 (在具有快速乘法器乘法的CPU上,可能仅比加法的速度慢4倍,但在“普通”硬件上,对于32位操作,它的速度要慢16-32倍。分频本身比乘法慢2-4倍,但在某些硬件上可能会慢很多。)

其余操作很少在硬件中实现,通常A % B映射到A - ((A / B) * B)行的某些内容(可能需要一些额外的操作来确保正确的符号等)。 / p>

(我在70年代早期对SUMC computer for RCA/NASA的指令集进行微程序设计时了解了这些内容。)