• Java中加减乘除的性能和位运算的性能比较


    测试【+ 、- 、 * 、 / 、<<、>>】加减乘除

    public class TestDemo {
        int anInt = Integer.MAX_VALUE;
    
        //21亿次+
        public void funAdd() {
            long i1=System.currentTimeMillis();
            int sum=0;
            for(int i = 0; i< anInt; i++) {
                sum+=i;
            }
            System.out.println(anInt+"次+:"+(System.currentTimeMillis()-i1));
        }
    
        //21十亿次-
        public void funSubtract() {
            long i1=System.currentTimeMillis();
            int sum=0;
            for(int i = 0; i< anInt; i++) {
                sum-=i;
            }
            System.out.println(anInt+"次-:"+(System.currentTimeMillis()-i1));
        }
    
        //21亿次*
        public void funMultiply() {
            long i1=System.currentTimeMillis();
            int sum=1;
            for(int i=0;i<anInt;i++) {
                sum*=2;
            }
            System.out.println(anInt+"次*:"+(System.currentTimeMillis()-i1));
        }
    
        //21亿次/
        public void funDivide() {
            long i1=System.currentTimeMillis();
            int sum=Integer.MAX_VALUE;
            for(int i=2;i<anInt;i++) {
                sum/=2;
            }
            System.out.println(anInt+"次/:"+(System.currentTimeMillis()-i1));
        }
    
        //21亿次<<1 等效*2
        public void funMultiplyBit() {
            long i1=System.currentTimeMillis();
            int sum=1;
            for(long i = 0; i< anInt; i++) {
                sum= sum << 1;
            }
            System.out.println(anInt+"次位乘2:"+(System.currentTimeMillis()-i1));
        }
    
        //21亿次>>1 等效/2
        public void funDivideBit() {
            long i1=System.currentTimeMillis();
            int sum=Integer.MAX_VALUE;
            for(long i = 0; i< anInt; i++) {
                sum=sum>>1;
            }
            System.out.println(anInt+"次位除2:"+(System.currentTimeMillis()-i1));
        }
    
        public static void main(String[] args) {
            TestDemo demo = new TestDemo();
            demo.funAdd();
            demo.funSubtract();
            demo.funMultiply();
            demo.funDivide();
            demo.funMultiply();
            demo.funDivideBit();
            }
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74

    在这里插入图片描述
    在运算中,优先使用 【>> 1】 来代替 【/ 2】可大大提升程序性能

  • 相关阅读:
    折半插入排序
    Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库
    今年快30岁的我,还是选择了裸辞···
    JAVA ---泛型的扩展
    循环队列的实现
    一文读懂CMake
    WPF 设置全局静态参数
    【力扣 Hot100 | 第七天】4.22(找到字符串中所有字母异位词)
    pybullet 康奈尔数据集转换(四+)训练前看
    [报错解决](Error Creating bean with name ‘xxx‘)类问题解决思路
  • 原文地址:https://blog.csdn.net/qq_46548855/article/details/126168232