首页 > java > profile > 3.java浮点数运算和整数型运算的效率比较

3.java浮点数运算和整数型运算的效率比较

1 浮点数运算效率误区的产生原因

部分程序员对应浮点数(float,double)做运算的时候,会有一个误区就是浮点数运算效率比整型运算效率低很多。产生这个认识的原因是因为以人的角度来考虑这个问题,做小数除法要比做整数除法麻烦一些而得出的。通过实际代码来比较一下这差异。

2 浮点数运算和整型运算效率对比

用一个简单的方式来做一下对比:

用浮点数和整数分别做一次乘法和一次加减乘除运算,来运行20亿次,看看这两种方式花费的时间。

示例代码

package com.dashidan.profile3;

/**
 * 大屎蛋教程网-dashidan.com
 * 3.java浮点数运算和整数型运算的效率比较
 *
 * Created by 大屎蛋 on 2018/5/24.
 */
public class Demo1 {

    public static void main(String[] args) {
        int count = 2000000000;
        /** 浮点数运算*/
        long t1 = System.currentTimeMillis();
        for (int i = 0; i < count; i++) {
            double d = 999999999.9d + 999999999.9d / 2d - 999999999.9d;
            d = d * 2d;
        }
        long t2 = System.currentTimeMillis();
        /** 整数数运算*/
        for (int i = 0; i < count; i++) {
            int n = 999999999 + 999999999 / 2 - 999999999;
            n = n * 2;
        }
        long t3 = System.currentTimeMillis();
        System.out.println((t2 - t1));
        System.out.println((t3 - t2));
    }
}

输出结果:

3
1

多运行几次,每次的结果可能不一致。总体上来说浮点数花费的时间会比整型多一点。我的电脑上跑了多次,相差在个位数毫秒。运行20亿次,差别也不大。说明这个量级的浮点数运算的效率没有太大的影响。

转载请保留原文链接.