我正在阅读this page关于.NET中的操作性能,并看到除法操作与其余操作之间存在巨大差异。
然后,模运算符很慢,但是对于我们可以用于相同目的的条件块的成本是多少?
假设我们有一个正数y
,它不能是> = 20.哪一个作为一般规则更有效(不仅仅是在.NET中)?
此:
x = y % 10
或者这个:
x = y
if (x >= 10)
{
x -= 10
}
答案 0 :(得分:0)
您调用模运算的次数是多少?如果它在某个紧密的内部循环中被调用多次,那么你应该看看其他防止数组溢出的方法。如果被称为< (比方说)10,000次,我不担心。
至于您的代码段之间的效果 - 测试它们(如果可能的话,使用一些真实数据)。你不知道编译器/ JITer和CPU在做什么。如果第二个参数是常量且幂为2,则%
可以优化为&
。在CPU级别,您正在讨论除法和分支预测之间的差异,这将是取决于你的其余代码。