在一个拥有少量POJO和大量辅助方法的应用程序中,有哪些更好的性能:使辅助类单例化或使方法成为静态?
答案 0 :(得分:10)
静态方法在性能和内存方面会稍微好一些:
但说实话,我仍然可能会成为singleton
。通过不这样做你获得的收益可能很小,即使在移动环境中也会产生零差异。
答案 1 :(得分:6)
你能避免这两种情况并定期上课吗?
忽略性能问题,我建议避免使用singeltons和静态方法来提高可测试性。
单身人士和静态方法很难测试;在这方面,单例基本上是静态方法,但具有不同的名称。在Misko Hevery工作的Google Test team有一些关于这个主题的好文章:
答案 2 :(得分:4)
不要担心像这样荒谬的微观优化。担心可维护性。
听起来应用程序是以完全非OO风格编写的,并且可以通过消除大多数“辅助方法”并将它们放在它们所属的位置以及它们运行的数据而从中受益匪浅。
答案 3 :(得分:2)
从表面上看问题,静态调用可能需要最少量的CPU功率。原因是普通方法是动态绑定的,并且在运行时需要进行一些查找,而静态方法在编译时绑定。
话虽如此,在您的申请中可能无关紧要。差别很小。如果你的应用程序使用gui,xml渲染,互联网连接或其他外部操作做任何事情,你会发现这些活动使一个巨大的因素使简单的mathod查找相形见绌。
即使你不这样做,在分析过程中你更有可能遇到一个瓶颈来阻止你的应用程序发现它不是方法查找,而是你自己做的一些逻辑。例如,您使用了一个arraylist而不是一个hashset,而contains方法变得很昂贵。
因为在这些情况下的性能并不重要,我建议使用静态方法之上的单例实现,因为设计稍微灵活一些。虽然在你提供的选择之外,我会完全删除帮助类,并在你的pojo中内联方法。