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! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |