当前位置: 首页 > 面试题库 >

在Java中使用int a = a + 1和a ++之间的性能差异

孟哲
2023-03-14
问题内容

使用int a=a+1a++in 之间有什么性能差异Java

如果是这样,哪个更好,为什么?您能简要解释一下以了解这一点吗?


问题答案:

查看生成的字节码:

public static void main(String[] args) {
    int x = 1;
    int y = 1;
    int z = 1;
    int a = 1;
    int b = 1;
    x = x + 1;
    y++;
    ++z;
    a += 1;
    b += 2;
}

产生(使用javap -c classname

0:   iconst_1
1:   istore_1
2:   iconst_1
3:   istore_2
4:   iconst_1
5:   istore_3
6:   iconst_1
7:   istore  4
9:   iconst_1
10:  istore  5
12:  iload_1
13:  iconst_1
14:  iadd
15:  istore_1
16:  iinc    2, 1
19:  iinc    3, 1
22:  iinc    4, 1
25:  iinc    5, 2
28:  return

因此使用(jdk1.6.0_18):

x = x + 1

创造

12:  iload_1
13:  iconst_1
14:  iadd
15:  istore_1

y++;
++z;
a += 1;

全部导致

iinc

但是,在笔记本电脑上进行粗略的性能测试后,两者的运行时间几乎没有差异(有时++ x更快,有时x = x + 1更快),因此我不必担心性能影响。



 类似资料:
  • 问题内容: 在Numpy中,和和作为一个numpy数组,似乎都返回该数组的非零索引。这三个电话之间有什么区别? 在文档上说: 与相同。 为什么要有一个只对输出进行转置的函数?什么时候如此有用以至于它应该具有单独的功能? 和之间有什么区别?他们不会返回完全相同的结果吗? 问题答案: 和两个就给大家介绍其中数组中的元素信息。 的工作方式与您发布的表单相同,但是具有第二种形式: 可以粗略地认为它是条件表

  • 问题内容: 我正在学习Java,但有两个问题: 之间有什么区别? 和 考虑到: 之间有什么区别: (A)x.run_function(); 假设A和B都具有函数,将执行哪个函数? 问题答案: 最重要的区别在于对象的静态和动态类型与对象的引用之间。 说B延伸A,C延伸B。 对象的动态类型(新类型中使用的类型)是其实际的运行时类型:它定义了对象的实际方法。 对象引用(变量)的静态类型是编译时类型:它定

  • 问题内容: 我有两次没有约会 我想通过使用以下方式显示上述时间之间的总时数 如果不可能, 请告诉我使用by 。 输入: 预期产量: 问题答案: 获取时间 我通过使用这段代码来节省时间 获取分钟 我通过使用下面的代码得到了几分钟 我的工作代码是

  • 问题内容: 我目前正在尝试了解在自定义类上使用和之间的区别。有许多网站说使用’+’运算符会导致使用特殊方法-到目前为止还不错。 但是,当我运行以下示例时,我得到两个不同的结果。 结果: 现在,据我了解,执行Python时检查/执行int方法-发现没有实现添加int和C对象的实现-返回NotImplemented- 这使Python知道检查对象C并执行其中的代码。 为什么执行代码会导致结果,但是其他

  • 使用AtomicLong.IncrementAndGet方法测试JDK7和JDK8的性能差异,测试数据表明JDK7的性能优于JDK8。为什么JDK7的性能比JDK8好?是什么导致JDK8中的性能差? 系统环境: CPU:Intel(R)至强(R)CPU E5620@2.40 GHz 2.40 GHz(双处理器) 内存:8.00 GB set jvm_opt=-xms1024m-xmx1024m-x