double、float,哪个更快?

假设精度足够的情况下,double和float哪个更快?

有人说,float更快,因为需要处理的数据量少,有人说,double快,因为最终CPU在进行计算时需要先把float转换为double。真相如何呢?

VC++的编译器设置里有三种浮点模型,这三种浮点模型有什么区别呢?对运算速度又有什么影响呢?

测试环境:Visual Studio 2013 update2,Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz

测试代码:


#include "stdafx.h"
#include
<Windows.h>
#include
<math.h>

int
_tmain(int
argc, _TCHAR* argv[])
{
    const
int N = 50000000;
    LARGE_INTEGER start, end;

//测试float
    float f1 = 12.0f;
    QueryPerformanceCounter((LARGE_INTEGER*)&start);
    for (int i = 0; i < N; i++)
    {
        f1 = sin(sqrt(exp(f1 * 2)));
    }
    QueryPerformanceCounter((LARGE_INTEGER*)&end);

printf("float --->%f, %ld\r\n", f1, end.QuadPart - start.QuadPart);

//测试double
    double f2 = 12.0;
    QueryPerformanceCounter((LARGE_INTEGER*)&start);
    for (int i = 0; i < N; i++)
    {
        f2 = sin(sqrt(exp(f2 * 2)));
    }
    QueryPerformanceCounter((LARGE_INTEGER*)&end);
    printf("double --->%lf, %ld\r\n", f2, end.QuadPart - start.QuadPart);

system("pause");

return 0;
}

测试结果:


/fp:precise


/fp:fast


/fp:strict


float 7779467
double 6824241


float 5541635
double 6428042


float 9438907
double 8601029

时间: 2024-10-17 06:27:19

double、float,哪个更快?的相关文章

新型序列化类库MessagePack,比JSON更快、更小的格式

MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte i

让Python代码更快运行的 5 种方法

不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之处,那就是执行效率和性能不够亮.尽管Python从未如C和Java一般快速,但是不少Python项目都处于开发语言领先位置. Python很简单易用,但大多数人使用Python都知道在处理密集型cpu工作时,它的数量级依然低于C.Java和JavaScript.但不少第三方不愿赘述Python的优点,而是决定自内而外提高其性能.如果你想让Python在同一

让Python跑得更快

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本文可能是因为你的代码现在能够正确运行,而你希望它能跑得更快.你可以很轻松地修改代码,反复地实现你的想法,你对这一点很满意.但能够轻松实现和代码跑得够快之间的取舍却是一个世人皆知且令人惋惜的现象.而这个问题其实是可以解决的. 有些人想要让顺序执行的过程跑得更快.有些人需要利用多核架构.集群,或者图形处理单元的优势来解决他们的问题.有

利用更快的r-cnn深度学习进行目标检测

此示例演示如何使用名为"更快r-cnn(具有卷积神经网络的区域)"的深度学习技术来训练对象探测器. 概述 此示例演示如何训练用于检测车辆的更快r-cnn对象探测器.更快的r-nnn [1]是r-cnn [2]和快速r-nnn [3]对象检测技术的引伸.所有这三种技术都使用卷积神经网络(cnn).它们之间的区别在于它们如何选择要处理的区域以及如何对这些区域进行分类.r-cnn和快速r-概算在运行美国有线电视新闻网之前使用区域建议算法作为预处理步骤.提议算法通常是技术例如edgox [4]

让你的Python代码更快运行的 5 种方法

https://cloud.tencent.com/developer/news/354761 不论什么语言,我们都需要注意性能优化问题,提高执行效率.选择了脚本语言就要忍受其速度,这句话在某种程度上说明了Python作为脚本语言的不足之 处,那就是执行效率和性能不够亮.尽管Python从未如C和Java一般快速,但是不少Python项目都处于开发语言领先位置. Python 很简单易用,但大多数人使用Python都知道在处理密集型cpu工作时,它的数量级依然低于C.Java和JavaScrip

【Java并发工具类】StampedLock:比读写锁更快的锁

前言 ReadWriteLock适用于读多写少的场景,允许多个线程同时读取共享变量.但在读多写少的场景中,还有更快的技术方案.在Java 1.8中, 提供了StampedLock锁,它的性能就比读写锁还要好.下面我们介绍StampedLock的使用方法.内部工作原理以及在使用过程中需要注意的事项. StampedLock支持的三种锁模式 ReadWriteLock支持两种访问模式:读锁和写锁,而StampedLock支持三种访问模式:写锁.悲观读锁和乐观读. 其中写锁和悲观读锁的语义与ReadW

代码示例:一些简单技巧优化JavaScript编译器工作详解,让你写出高性能运行的更快JavaScript代码

告诉你一些简单的技巧来优化JavaScript编译器工作,从而让你的JavaScript代码运行的更快.尤其是在你游戏中发现帧率下降或是当垃圾回收器有大量的工作要完成的时候. 单一同态: 当你定义了一个两个参数的函数,编译器会接受你的定义,如果函数参数的类型.个数或者返回值的类型改变编译器的工作会变得艰难.通常情况下,单一同态的数据结构和个数相同的参数会让你的程序会更好的工作. function example(a, b) { // 期望a,b都为数值类型 console.log(++a * +

Oracle里count(1)、count(*)和count(主键)哪个更快

这两天听了将近20场演讲,感觉收获很多,最深的感觉就是自己还有很长的路要走.有几个点记录一下: 昨天听老猫讲,提到一个普遍的问题就是Oracle里count(*).count(1)和count(主键)到底哪个快的问题.这个问题看起来很简单,每个人都会有自己的答案,去百度上搜会出来一大堆帖子来讲哪个更快.但是老猫说了它们三个其实是一样的,我听到之后也觉得挺诧异的,因为我记得别人跟我说过count(主键)会快,然后自己简单想了一下,觉得好像是那么回事的就没有深入去追究.接着老猫说官方有这样的说法这三

探寻C/C++中更快的大数(自然数集)模板

本文系fcbruce个人原创整理,转载请注明出处http://blog.csdn.net/u012965890/article/details/40432511,谢谢! 我们知道在C/C++中int型可处理-2^31~2^31-1(32位及以上编译器),long long型可处理-2^63~2^63-1的数据,这实际上是非常有限的,在很多情况下,我们往往会处理范围更大的数据.Java中有BigInteger类,python中想要多大就有多大(取决于内存),但是C/C++就显得有些乏力,这时候我们