gpt4 book ai didi

c - sinf()、cosf() 和 sin()、cos() 之间的任何性能差异

转载 作者:太空狗 更新时间:2023-10-29 15:05:58 40 4
gpt4 key购买 nike

我的代码主要处理单精度 float 。对超越函数的调用相当频繁。现在,我正在使用 sin()、cos()、sqrt() 等——接受并返回 double 的函数。当它仅为 x87 编译时,我知道单精度和 double 之间没有区别。我在 Agner Fog 的优化指南中读到,使用 SSE 指令的这些函数的软件版本对于单精度 float 更快。

我的问题是编译器在遇到类似这样的情况时是否会自动使用更快的函数:

float x = 1.23;
float y = sin(x);

或者舍入规则是否排除了这种优化?

只需执行搜索和替换并查看是否有任何性能提升就足够容易了。麻烦的是我还需要指向这些函数的指针。在 MSVC 中,sinf()、cosf() 和 friends 是内联函数。因此,使用它们需要一些体操。在做出努力之前,我想知道这是否值得。

除了 MSVC,我还针对 gcc。

最佳答案

调用sin时真的不需要强制转换.事实上,如果你使用 <tgmath.h> 会适得其反。 C99 附带的 header 。这为您提供了类型的通用宏,这些宏将根据您的参数选择正确的函数,不幸的是,不是针对目标类型。因此,如果您使用该 header (不确定这是否适用于 MS)

float x = 1.23;
float y = sin(x);

会自动使用sinf在幕后。

关于c - sinf()、cosf() 和 sin()、cos() 之间的任何性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16178932/

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