【问题标题】:Which design patterns improve performance?哪些设计模式可以提高性能?
【发布时间】:2017-11-17 10:52:52
【问题描述】:

当我们谈论设计模式时,我听到的第一句话就是常见架构问题的文档化解决方案。

我很想知道哪些设计模式是总体上提高应用程序性能的好解决方案。

【问题讨论】:

  • @user619133,您应用的模式特定于您要解决的问题。这是一种误解,认为一种设计模式可以适用于所有解决方案。
  • 一般生活的答案是什么?

标签: design-patterns


【解决方案1】:

享元减少内存消耗。

代理模式可用于速度优化。

桥接模式可以动态更改抽象的实现 - 总是选择 效率最高的。

【讨论】:

  • 这些模式非常有用。在内存仍然存在问题的小型设备中,管理内存可以提高性能。我相信单例模式也能有效地改善内存管理
  • Singleton 解决了一次只维护一个实例的问题。它不能解决任何效率问题。此外,这是最棘手的模式,应该避免,除非没有其他解决方案(事实上总是有)。
  • 是的,你是对的。看到你的评论后,我做了一些谷歌搜索,得到了这些链接stackoverflow.com/questions/1392315/…misko.hevery.com/2008/08/17/singletons-are-pathological-liarsmisko.hevery.com/2008/08/25/root-cause-of-singletons。简而言之,单例模式对内存非常不利,因为它永远不会被释放。而且它会导致代码不清晰,不利于测试。唯一可以使用的地方是日志记录
  • 对于享元模式,此链接很好地解释了为什么它对性能有好处javaworld.com/javaworld/jw-07-2003/…“分配大量(通常是小)对象可能会损害 Java 应用程序的性能,尽管现代 JVM 已经大大减少了您必须为此类超额支付的罚款。如果您发现您的应用程序正在实例化大量特定类型的对象,您可能会考虑使用享元模式来共享有限数量的这些对象“
【解决方案2】:

更严肃地说,设计模式可能会降低性能。根据我的经验,使用设计模式可以提供更简洁、更易于维护的代码。如果您需要优化任何东西,您可能需要重新设计代码模式。

通常代码的性能取决于相对较小的部分(数据结构、函数,甚至是单个循环),因此它不以任何方式进入设计模式的范围。将 C 中的直接函数更改为汇编中的超级优化版本可能不会改变整个类的行为方式。

【讨论】:

  • 在一个方面你是对的,我认为设计模式最重要的用途是使代码易于扩展、可维护并以有效的方式管理内存
【解决方案3】:

可能是“不做傻事”的模式。如果跟随到发球台,你会发现它的节拍:

  • 工厂
  • 单例
  • MVC
  • 面向方面的编程
  • 极限编程和极限程序员(无情)
  • DotNetNuke(两次)
  • Drupal(一次)

放下手

【讨论】:

    【解决方案4】:

    Object Pool Pattern

    对象池模式是一种软件创建设计模式, 使用一组准备好使用的初始化对象——一个“池”—— 而不是按需分配和销毁它们。

    对象池主要用于性能:在某些情况下 在这种情况下,对象池可以显着提高性能。

    【讨论】:

      【解决方案5】:

      没有类似的东西。设计模式用于使您的developmentmaintance 更容易。

      大部分设计模式用于

      design pattern is a general reusable solution to a commonly occurring problem in software design
      

      【讨论】:

        猜你喜欢
        • 2013-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 1970-01-01
        • 2016-06-20
        相关资源
        最近更新 更多