我正在制作一个pong程序,并且只是想知道C中是否存在快速浮点数.其他数据类型(例如double)的加值点.
PS我试图查看这个,但无济于事.
C标准语言和库没有定义这样的类型.
<stdint.h>定义[u]int_fastN_t,N等于8,16 32和64.每个这样的类型是给定宽度的"最快"整数类型.这些不是比内置类型更快的特殊类型.它们仅仅是现有类型的别名,被选择用于获得最佳性能.例如,16位整数可能比一个系统上的32位整数快,或者在另一个系统上慢.
这在C正好3个标准的浮点类型float,double和long double.该语言无法确定哪一个是最快的.
在实践中,要么float或者double最有可能是最快的浮点类型. float是最小的,你可能认为它是最快的,但实际上它取决于当前的硬件.在某些系统上double实际上可能比float.(我从不打扰自己测量它.)
double在某种意义上是"默认"浮点类型.它是一个未混合的浮点常数的类型42.0,并且函数<math.h>显示类型的偏差double.例如,sqrt()运行在double,并sqrtl()和sqrtl()操作上float和long double分别.
我的建议:使用类型double.如果事实证明您的代码不够快,请考虑尝试float- 并测量系统的实际性能.请记住,您的代码不能尽可能快; 它必须足够快.在合理的现代计算机上,浮点速度不太可能成为乒乓程序的性能瓶颈.
甚至可能只使用整数算法来实现pong,这可能比浮点更快 - 但差异不太可能是关键的.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |