gpt4 book ai didi

c - 对于整数模计算,fmod 是否比 % 快

转载 作者:太空狗 更新时间:2023-10-29 16:56:23 25 4
gpt4 key购买 nike

刚刚在一些旧的 src 代码中发现了以下行:

int e = (int)fmod(matrix[i], n);

其中matrix是一个int数组,n是一个size_t

我想知道为什么在我们有整数参数的地方使用 fmod 而不是 %,即为什么不:

int e = (matrix[i]) % n;

选择 fmod 而不是 % 是否可能有性能原因,或者它只是一段奇怪的代码?

最佳答案

Could there possibly be a performance reason for choosing fmod over % or is it just a strange bit of code?

fmod在具有高延迟的架构上可能会快一点 IDIV指令,需要(比如说)~50 个周期或更多,所以 fmod的函数调用和 int <---> double转化成本可以摊销。

根据 Agner's Fog instruction tables , IDIV在 AMD K10 架构上需要 24-55 个周期。与现代 Intel Haswell 相比,其延迟范围列为 22-29 个周期,但如果没有依赖链,Intel 上的倒数吞吐量要好得多,为 8-11 个时钟周期。

关于c - 对于整数模计算,fmod 是否比 % 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685039/

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