gpt4 book ai didi

c++ - 为什么 std::remquo 这么慢?

转载 作者:行者123 更新时间:2023-11-30 02:14:40 24 4
gpt4 key购买 nike

在一些内部循环中我有:

    double x;
...
int i = x/h_;
double xx = x - i*h_;

认为这可能是更好的方法,我尝试使用 std::remquo

    double x;
...
int i;
double xx = std::remquo(x, h_, &i);

突然间,时间从 2.6 秒变为 40 秒(对于循环的多次执行)。

计时测试在这里很难复制,但我做了一个在线代码,看看是否有人可以帮助我理解发生了什么。

原始版本:https://godbolt.org/z/PnsfR8

remquo 版本:https://godbolt.org/z/NSMwyW

看起来主要区别在于 remquo 没有内联,而原始代码是。如果是这样的话,如果 remquo 总是比手动代码慢,那么它的目的是什么?这是一个准确性问题(例如,对于大参数)还是不依赖(定义不明确的)强制转换?


我刚刚意识到 remquo 版本甚至没有做与第一个代码相同的事情。所以我用错了。无论如何,我很惊讶 remquo 这么慢。

最佳答案

这是一个添加到 C99 中以诱使 Fortran 编码人员切换到 C 的垃圾函数。几乎没有理由实际使用它,因此库供应商避免浪费时间优化它。

另请参阅:What does the function remquo do and what can it be used for? .

顺便说一句,如果您假设 i 获取存储在其中的商,请更仔细地阅读文档! (或阅读上一段中链接的问题的答案)。

关于c++ - 为什么 std::remquo 这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57353163/

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