3

模函数timespec 规范化中,内核代码都通过循环计算模,并防止编译器将循环优化为模运算符。

为什么需要这个?

我希望如果这种优化不好,编译器就不会那样做。除了,可能存在这种优化更快的架构。为什么所有架构都需要此代码?

4

1 回答 1

2

对于程序员知道被除数只比除数大一点的情况(因此迭代版本只会循环一次或两次),就会这样做。不能指望编译器解决这个问题。这是由以下评论解释的div64.c

/*
 * Iterative div/mod for use when dividend is not expected to be much
 * bigger than divisor.
 */

您指向的模函数是iter_div_u64_rem(),在需要时显式使用;对于常规模数版本,有div_u64_rem().

于 2013-06-27T11:37:11.277 回答