GLSL中哪个更快:
pow(x, 3.0f);
或
x*x*x;
取幂性能是否取决于硬件供应商或指数值?
答案 0 :(得分:8)
虽然这肯定取决于硬件/供应商/编译器,但像pow()
这样的高级数学函数往往比基本操作贵得多。
最好的方法当然是同时尝试和基准测试。但如果有一个简单的替代高级数学函数,我认为你不会因为使用它而出错。
如果您编写pow(x, 3.0)
,您可能希望的最好的是编译器将识别特殊情况并展开它。但是,为什么要承担风险,如果替换的同时又简短易读? C / C ++编译器并不总是通过简单的乘法替换pow(x, 2.0)
,因此我不一定会指望所有GLSL编译器都这样做。