【问题标题】:Tradeoff between using this and inline code in constructor在构造函数中使用 this 和内联代码之间的权衡
【发布时间】:2016-08-17 21:59:21
【问题描述】:

通过 this() 调用重载构造函数有用的一个原因是它可以防止不必要的代码重复。在许多情况下,减少重复代码可以减少加载类所需的时间,因为通常目标代码更小.这对于通过 Internet 交付的程序尤其重要,因为在这些程序中加载时间是一个问题。

但是,您需要小心。调用 this() 的构造函数将比那些包含所有内联初始化代码的构造函数执行得慢一些。这是因为调用第二个构造函数时使用的调用和返回机制增加了开销。如果您的类将仅用于创建少数对象,或者如果类中的构造函数 调用 this() 将很少使用,那么这种运行时性能的下降可能是微不足道的。

加载类所用的时间有多短? 和 在构造函数中使用 this 和使用内联代码之间的权衡点应该是什么?

【问题讨论】:

  • 这里没什么争议。编写代码是为了可读性和维护,而不是理论上的性能优势。这意味着您只需编写一次代码并在需要时使用this() 调用它。
  • 您有性能问题吗?重复代码,从而使其更难维护,是否可以解决它?
  • 性能完全无关紧要。使用最易维护的代码。代码中的重复意味着当您需要进行更改时,您很有可能会忘记在代码重复的任何地方进行更改。
  • 在 3 毫秒和 2 KB 之间进行权衡(其中 JVM 本身将占用数十兆字节)......我真的看不出这里有任何问题 - 这无关紧要。如果性能/内存使用如此关键,您就不会使用 Java。

标签: java performance constructor this overloading


【解决方案1】:

这是过早优化的典型案例。没有人在消除重复时考虑性能,他们只想删除几个本质上做同样事情的代码路径,同时使代码库变得混乱,并为这些代码路径之间的分歧提供机会。

结论:不要为这些琐碎的事情操心,只要写出好的简洁的代码。复制对系统的伤害是方法调用对性能的伤害的一千倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2015-10-19
    • 2021-09-29
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多