概述
最近在看c++ primer,其中有一页写道,很多现代机器运算double数据的速度并不比float要慢,而float由于精度不高,因此在可以的情况下,尽量使用double数据类型。介于此,我做了一个实验:
下面是实验代码:
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
clock_t time1, time2;
double a = 3;
time1 = clock();
for (unsigned int i = 0; i < 10000000u; i++)
{
a += 1e-3;
a += 1e-3;
a += 1e-3;
a += 1e-3;
}
time2 = clock();
cout << a << endl;
cout << time2 << endl;
cout << time1-time2 << endl;
return 0;
}
实验证明,同等情况下,在本人机器上(core i5-4200)上,float类型和double类型运算所消耗的时钟周期相同。值得一提是,如果将a的声明改为float a = 3,那么运算时间会增加几乎一倍,主要原因在于,在循环体内部的运算存在类型从double到float的转换,如果将1e-3写为1e-3f则会省去类型转换。
因此,在此澄清一下多年来的谬论,很多时候,double比float的精度更高,避免了可能的类型转换,而这种类型转换可能反而拖慢了程序运行的速度。
最后
以上就是悲凉寒风为你收集整理的多年以前,有人告诉我,float运算比double要快的全部内容,希望文章能够帮你解决多年以前,有人告诉我,float运算比double要快所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复