我有三个班级,一个是Feature
,另一个是ContacstsSender
和ContactsRetriever
。 Feature
类有两种方法在其他两个类中都很常见,它们必须使用它们。这两个方法都包含几行代码,比如说6到10.我想知道将这些类和方法保存在原来的位置是好的,或者只是将这些小方法放在这两个类中,因为从另一个类调用时可能再次花费效率?在内存概念中,如何从本地调用类和调用方法有用吗?感谢
答案 0 :(得分:2)
通常,从同一个班级或另一个班级拨打电话会花费相同的virtual method table查询费用。
我向您推荐维基百科文章以获取完整的详细信息,但以下引用很好地解释了Peter的评论:
此外,在未使用JIT编译的环境中,通常无法内联虚函数调用。虽然编译器可以用例如每个内联体的条件执行来替换查找和间接调用,但这种优化并不常见。 为了避免这种开销,编译器通常会避免在编译时解析调用时使用vtable。
编译器知道如何优化vtable查找的一种示例包括在类或函数上使用final
修饰符(因为子类不可能覆盖该函数)。
答案 1 :(得分:2)
从另一个班级一次又一次地打电话可能会带来成本效率
重要的不是方法的位置,而是方法在内存中使用的参数的位置。但即使参数的位置在99%的情况下都不重要。
在记忆的概念中,它会有用吗?
内存明智它没有区别(除了类加载器加载的类文件的大小,但我们在这里谈论数百个字节)。
所以避免代码重复,你就没事了。
与往常一样,优化时,应用程序中的瓶颈不在您认为的位置,您应该使用分析器来查找它们。