博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java之深入JVM(2) - 由深入JVM(1)想到的一个面试题
阅读量:5914 次
发布时间:2019-06-19

本文共 2622 字,大约阅读时间需要 8 分钟。

面试题:i++和i--哪个快些?

这个不知道是哪位朋友跟我说的一个面试题,当时我听到这个题目的时候,我也不知所措,或许是对i++和i--的底层实现不知道,也或许没有关注过这个问题.

今天就在这里做个测试:

1.测试环境:电脑配置: 系统配置: jdk版本:jdk1.6.0_20

2.测试代码:

package Sort;public class Increament {    /**     * @param args     * @throws InterruptedException      */    public static void main(String[] args) throws InterruptedException {        decrement();        increment();    }            public static void decrement() {        long start2 = System.currentTimeMillis();        for(long i = 100000000L; i > 0; i--) {        }        long end2 = System.currentTimeMillis() - start2;        System.out.println(end2);    }        public static void increment() {        long start = System.currentTimeMillis();        for(long i = 1; i < 100000000L; i ++) {        }        long end1 = System.currentTimeMillis() - start;        System.out.println(end1);    }}

 

3.字节码

D:\jdk1.6.0_20\bin>javap -c IncreamentCompiled from "Increament.java"public class Increament extends java.lang.Object{public Increament();  Code:   0:   aload_0   1:   invokespecial   #1; //Method java/lang/Object."
":()V 4: returnpublic static void main(java.lang.String[]) throws java.lang.InterruptedException; Code: 0: invokestatic #2; //Method decrement:()V 3: invokestatic #3; //Method increment:()V 6: returnpublic static void decrement(); Code: 0: invokestatic #4; //Method java/lang/System.currentTimeMillis:()J 3: lstore_0 4: ldc2_w #5; //long 100000000l 7: lstore_2 8: lload_2 9: lconst_0 10: lcmp 11: ifle 21 14: lload_2 15: lconst_1 16: lsub 17: lstore_2 18: goto 8 21: invokestatic #4; //Method java/lang/System.currentTimeMillis:()J 24: lload_0 25: lsub 26: lstore_2 27: getstatic #7; //Field java/lang/System.out:Ljava/io/PrintStream; 30: lload_2 31: invokevirtual #8; //Method java/io/PrintStream.println:(J)V 34: returnpublic static void increment(); Code: 0: invokestatic #4; //Method java/lang/System.currentTimeMillis:()J 3: lstore_0 4: lconst_1 5: lstore_2 6: lload_2 7: ldc2_w #5; //long 100000000l 10: lcmp 11: ifge 21 14: lload_2 15: lconst_1 16: ladd 17: lstore_2 18: goto 6 21: invokestatic #4; //Method java/lang/System.currentTimeMillis:()J 24: lload_0 25: lsub 26: lstore_2 27: getstatic #7; //Field java/lang/System.out:Ljava/io/PrintStream; 30: lload_2 31: invokevirtual #8; //Method java/io/PrintStream.println:(J)V 34: return

这里为什么要把i置为100亿,因为在这个数字下面他们之间的区别才明显:27765ms,38516ms;经多次测试i++略耗时些。

其实还是不知道原来是什么....

 
 

转载地址:http://azwvx.baihongyu.com/

你可能感兴趣的文章
一个=号引发的错误.......
查看>>
CPU显卡内存与3DMAX渲染的关系
查看>>
Hive(一):Hive的安装部署
查看>>
Tomcat9 多端口 多项目
查看>>
linux tomcat配置https
查看>>
史上最牛最详细的Linux教程 不看后悔终生!
查看>>
极快的正整数排序函数
查看>>
mysql数据库sleep进程过多的处理办法
查看>>
第二次作业
查看>>
opencv 实现图像像素点反转
查看>>
Access denied for user 'root'@'localhost' (using p
查看>>
linux中grep命令
查看>>
H3C模拟器 DHCP Snooping 、中继 实例配置
查看>>
sed工具的使用
查看>>
数据仓库工程师、大数据开发工程师、BI工程师、ETL工程师之间有什么区别?...
查看>>
JVM初识-java类加载器
查看>>
对比各类分布式锁缺陷,抓住Redis分布式锁实现命门
查看>>
设置typeid后织梦currentstyle 不起作用的修复方法
查看>>
AndroidManifest.xml解析
查看>>
linux下磁盘分区详解
查看>>