【发布时间】:2013-09-25 10:30:10
【问题描述】:
这完全是一个假设性问题。
在下面的代码中,我正在执行计算,它有一个变量 z ,作为分配“nan”的值。与正常的 z 值相比,主计算会更慢(如 z = 1.0)
float z = 0.0/0.0; // that means z is "nan"
float p = 50.0, q = 100.0, r = 150.0;
// main calculation Type 1
float c = ((x*100)+(y*100))/(x*100)+(y*100)+152*(p+q/r)+z;
这里是一个例子来展示正常z值的主要计算
float z = 1.0; // normal value for z
float p = 50.0, q = 100.0, r = 150.0;
// main calculation Type 2
float c = ((x*100)+(y*100))/(x*100)+(y*100)+152*(p+q/r)+z;
那么,哪一个更慢,Type 1 还是 Type 2?还是不会有时差? 在单次计算中,可能看不到时间差异,但是,如果我们收集数百万个这样的方程,时间结果会如何变化?
任何类型的想法、逻辑或信息都将受到赞赏。
注意:目前我不关心变量'c'的结果值;
【问题讨论】:
-
你为什么不尝试计时?
-
其实我得到了时差..但我想确定一下,是因为这个..有没有可能?
-
如果我更假设地认为,带有 nan 的方程应该更快,因为它不必实际计算结果并且必须返回 'nan' 作为最终答案。
-
为什么不看看拆解呢?
-
您是否启用了优化?如果是这样,我希望 NAN 案例更快。