wink's

梦想总比现实闪耀,所以我一路追寻

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

  忽然记起C++ PRIMER中提到过,double类型的数据,在CPU上运行会比float要快.

  其实,它这么说,是有些不严谨的.我们知道,CPU中的浮点运算,都是用一个叫做扩展精度寄存器来运算的.这个扩展精度寄存器是80位大小的(也就是10个字节).也就是说float和double都是扩展成10个字节来计算的.

  可能C++ PRIMER作者的意思是,在存回结果的时候,要进行截断,于是有更大精度范围的double自然会比float快.

  但是在C语言里面,扩展精度被实现为long double,这个有12个字节,主要是考虑到字节对齐(也和效率有关)的问题,所以多用了2个字节.所以,应该是long double的速度是最快的.

  但这同时也带来了空间上得一点浪费.

  本人小菜,说的不对,望各位高手指教.

posted on 2011-12-21 12:02  wink's  阅读(188)  评论(0)    收藏  举报