gpt4 book ai didi

c - 为什么 Linux 内核不长期使用模数?

转载 作者:行者123 更新时间:2023-12-04 10:39:56 25 4
gpt4 key购买 nike

都在modulo functiontimespec normalization内核代码通过循环计算模,并防止编译器将循环优化为模运算符。

为什么需要这个?

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

最佳答案

当程序员知道期望被除数只比除数大一点点时(因此迭代版本只会循环一次或两次),就采用这种方式。不能期望编译器解决这个问题。 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()

关于c - 为什么 Linux 内核不长期使用模数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17341298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com