0

我有三个类,一个是Feature,另一个ContacstsSenderContactsRetrieverFeature类有两个在其他两个类中通用的方法,他们必须使用它们。这两种方法都包含几行代码,例如 6 到 10。我想知道可以将这些类和方法保留在它们所在的位置,或者只是将这些小方法放在两个类中,因为一次又一次地从另一个类调用可能会花费效率?在内存的概念中,从类中调用并在本地调用方法会有什么用?谢谢

4

2 回答 2

2

通常,从同一个类或另一个类调用将花费相同的虚拟方法表查找。

我建议您参阅 wikipedia 文章以获取完整的详细信息,但以下引用很好地解释了 Peter 的评论:

此外,在不使用 JIT 编译的环境中,通常不能内联虚函数调用。虽然编译器可以用例如每个内联体的条件执行来替换查找和间接调用,但这种优化并不常见。为了避免这种开销,只要可以在编译时解析调用,编译器通常会避免使用 vtables。

编译器将知道优化 vtable 查找的方法的一个示例包括final在类或函数上使用修饰符(因为这样子类就不可能覆盖该功能)。

于 2013-01-14T07:57:29.997 回答
2

因为一次又一次地从另一个班级打电话可能会降低成本

重要的不是方法的位置,而是方法使用的参数在内存中的位置。但在 99% 的情况下,即使是参数的位置也无关紧要。

在内存的概念中它有什么用处?

内存方面没有区别(除了类加载器加载的类文件的大小,但我们在这里谈论的是数百个字节)。

所以避免代码重复,你会没事的。

与优化一样,应用程序中的瓶颈不在您认为的位置,您应该使用分析器来找到它们。

于 2013-01-14T07:59:20.023 回答