我有三个类,一个是Feature
和其他ContacstsSender
和ContactsRetriever
。 Feature
类有两种方法在其他两个类中都很常见,他们必须使用它们。这两种方法都包含几行代码,比如说6到10.我想知道,把这些类和方法放在哪里,或者把这些小方法放在两个类中都可以,因为从另一个类调用一次又一次会花费效率?在内存概念中,如何从本地调用类和调用方法会有用?谢谢其他类的调用方法中的代码效率
回答
从另一个类调用时,再次可能耗资效率
重要的是没有这么多的方法,通过在内存中的方法使用的参数的位置的位置。但即使是99%的情况下,参数的位置也不会有太大影响。
而在记忆的概念中,它会如何有用?
内存智慧它没有什么区别(除了类加载器加载的类文件的大小,但我们在这里讲的是数百字节)。
因此,避免代码重复,你会没事的。
像往常一样进行优化,应用程序中的瓶颈并不是您认为的瓶颈,您应该使用分析器来查找它们。
来自同一类别或另一个类别的调用一般会花费相同的virtual method table查找。
我是指你在维基百科文章的全部细节,但下面的报价说明彼得的评论相当不错:
此外,在环境中的JIT编译不使用时,虚函数调用通常不能内联。虽然编译器可以用例如每个内联体的条件执行代替查找和间接调用,但这种优化并不常见。 为了避免这种开销,编译器通常会避免在编译时解析调用时使用vtables。
的一种方式,编译器将知道优化掉一个虚函数表查找包括使用在任一类或功能的final
改性剂(因为那是不可能的一个子类覆盖的功能)的例子。
+1只有当方法不能内联时才会发生,例如因为有超过2种可能的方法可以调用。 –
事实上,我最初推迟了这篇文章,但我决定现在更新它,以便更清楚地了解何时可以优化虚拟表查找。 (这有点晚了,我正在懒惰......) –
- 1. 其他类的c#调用方法
- 2. Nulljava.lang.NullPointerException调用其他类的方法
- 3. 调用其他类的静态方法
- 4. 来自其他类的调用方法
- 5. 其他类的iOS调用方法
- 6. 在其他方法中调用类中的方法
- 7. Java效率(调用方法)
- 8. 调用同一类中其他方法的方法
- 9. 调用代码时从Asp.net中的其他类中的错误
- 10. asp.net重用其他代码隐藏的类方法aspx.cs
- 11. 调用其他类中的主要类方法的Android
- 12. 效率的代码
- 13. C#中的代码效率
- 14. Java - 解析方法调用其他类
- 15. THEOS:调用其他类(徽标)方法
- 16. 如何在“效率”目的的方法中移动代码块?
- 17. 从C++代码中调用Python调试的有效方法
- 18. 无法调用其他类中的方法
- 19. 代码效率,调试,对象方法,数组
- 20. 从代码中的其他地方调用JQuery事件...?
- 21. 绑定调用类内其他方法的方法
- 22. Python:当从另一个类中调用初始方法时调用其他类方法的类方法
- 23. 完成RPC调用以执行其他方法或代码?
- 24. PHP:当到达方法调用时忽略了其他代码
- 25. 如何调用其他包中保存的类的方法
- 26. 使用其他类/方法的类
- 27. 如何在其他类中调用另一个调用方法?
- 28. 循环中有没有其他DB调用的替代方法?
- 29. 调用其他类的类
- 30. 从javafx中的控制器调用其他类方法
你可能会发现我写的这篇文章很有趣。 http://vanillajava.blogspot.co.uk/2012/12/performance-of-inlined-virtual-method.html –
我曾经有一个比较复杂的算法来处理2D塔防游戏中的事件。我确信游戏运行缓慢。我把它调整到难以置信的难以理解的地步,几乎不可能理解。后来我终于决定使用一个分析器。在一个完全不同的地方Math.atan2计算中使用80%的处理能力,并在一个地方。通过简单的调整,我将处理时间缩短了近5倍。 TL; DR - 使用分析器。 – Dariusz