我经常注意到gcc在可执行文件中将乘法转换为移位。当将int
和float
相乘时,可能会发生类似的情况。例如,2 * f
可以简单地将f
的指数递增1,从而节省一些周期。编译器,也许如果有人要求他们这样做(例如,通过-ffast-math
),通常会这样做吗?
编译器通常是否足够智能来完成这项工作,或者我是否需要使用scalb*()
或ldexp()/frexp()
函数族自己完成这项工作?
https://stackoverflow.com/questions/12919184
复制相似问题