在具有少量 POJO 和大量对其进行操作的辅助方法的应用程序中,什么是更好的性能:使辅助类成为单例还是使方法成为静态?

有帮助吗?

解决方案

静态方法的性能和内存方面会稍微好一些:

  1. 避免虚函数调用的(潜在)开销。
  2. 消除了类的实际实例所需的内存。
  3. 使用该类时无需获取该类的实例。

但老实说我可能仍然会把它变成 singleton 无论如何。不这样做所获得的收益可能很小,即使在移动环境中,差异也为零。

其他提示

你能避免这两种情况并让他们正常上课吗?

忽略性能问题,我建议避免单例和静态方法以提高可测试性。

单例和静态方法可能很难测试;在这方面,单例本质上是静态方法,但名称不同。 米斯科·赫弗里, ,谁从事 谷歌测试团队, ,有一些关于这个主题的好文章:

不要担心荒唐微优化这样。担心可维护性。

这听起来像应用程序是用一个完全非面向对象的风格和属于他们的地方,与他们的数据操作上可以从消除了大部分的这些“辅助方法”,并把他们受益匪浅。

以你的面值问题,静态调用可能只需要CPU功率的量最少。其原因在于,普通的方法是动态的绑定,并且需要在运行时查找一些而静态方法结合的编译时间。

话虽如此,它可能不会在你的申请事项。所不同的是非常小的。如果你的应用程序做任何事情与GUI,XML渲染,网络连接或其它外部操纵your'll发现,这些活动由一个巨大的因素矮简单马托查找。

即使你不这样做,剖析你更有可能遇到一个瓶颈,阻碍了您的应用程序,并发现它是没有方法查找过程中,但一些逻辑,你做你的自我。例如,你用来代替一个HashSet一个ArrayList和包含方法变成是昂贵的。

所以,在这些情况下,性能并不重要,我会建议使用上面的静态方法的单身实现的设计是更灵活一点。虽然选择外,你提供我将完全删除辅助类和内嵌在你的POJO的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top