加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中嵌套方法调用的成本

发布时间:2020-12-15 08:46:57 所属栏目:Java 来源:网络整理
导读:我的假设是,通过编译器优化(例如,内联),一个方法是否“嵌套”几个级别几乎没有区别.那确实是这样吗? 例如,假设声明了以下3个类: public class Third extends Second{ public int test3() // Call test2() and nothing else { return super.test2(); }}publ
我的假设是,通过编译器优化(例如,内联),一个方法是否“嵌套”几个级别几乎没有区别.那确实是这样吗?

例如,假设声明了以下3个类:

public class Third extends Second
{
    public int test3() // Call test2() and nothing else
    {
        return super.test2();
    }
}

public class Second extends First
{
    public int test2()
    {
        return super.test1(); // Call test1() and nothing else
    }
}

public class First
{
    public int test1() // Calculate a result somehow
    {
        int result = 0;
        ...
        return result;
    }
}

给定3个已经实例化的对象第三个,第二个和第一个,以下调用的成本几乎相同?

third.test3();
third.test2();
third.test1();
second.test2();
second.test1();
first.test1();

如果方法的名称相同,它会在优化方面有什么不同吗?

解决方法

您是否应该担心方法调用开销?大多数时候,没有.只有当你有一个在循环中被大量调用的方法时,这个开销很重要.

通常,当您的方法正在进行的工作将花费在执行上的大部分时间时,时间差的纳秒意味着下蹲.此外,正如您所提到的,Java HotSpot VM确实在适当的位置进行了方法调用的内联.然而,这个决定取决于VM.看到这个链接:

http://java.sun.com/developer/technicalArticles/Networking/HotSpot/inlining.html

如今,软件开发中有更好的事情要担心.运送那个app!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读