【问题标题】:Java optimizations [closed]Java优化[关闭]
【发布时间】:2011-07-26 15:15:16
【问题描述】:

我在使用中经常看到许多 Java 编程实践,可以对其进行优化以显着提高速度。

示例:对于Strings 上的大量+ 操作,请改用StringBuilder

可以进行哪些简单、有用的优化,以显着提高程序的性能?

编辑:我不是在寻找琐碎的过早优化。这不是我提出这个问题的意图。相反,我想了解对性能造成重大影响的常见结构/错误。

【问题讨论】:

  • 您可以做很多小事来优化您的程序。所以这个问题没有真正的答案。
  • 您的示例是过早的优化。 当使用 + 运算符添加字符串时,Java 5 和 6 中的编译器会自动使用 StringBuilder source
  • @Goran Jovic:只有当 + 出现在一个语句中时,这才是正确的。如果您在循环中连接,StringBuilder 会明显更快,而且肯定不会过早优化。
  • @tskuzzy:不,这也包括循环。如果所有优点都在一个语句中并且所有参数都是字符串文字编译器应该走得更远,用单个字符串对象替换整个表达式。
  • 我不明白为什么它被关闭了。在提出这个问题时,我正在寻找具体的事实。

标签: java optimization


【解决方案1】:
  1. 在思考如何对特定运算符、控制流构造等进行微优化时,至少要多花一个数量级的时间来认真思考解决问题的最有效算法和数据结构。
  2. 见 (1)

【讨论】:

  • 我花了数年时间研究/研究算法/数据结构。但是一个好的算法的糟糕实现也不好。
  • 如果您对算法/数据结构的了解与您所暗示的一样多,那么您只能同意我的建议。
  • 如果您的建议确实 100% 正确,那么您就不会花时间输入这个问题 stackoverflow.com/questions/6754454/…,而是最好花时间阅读算法书籍。
  • 这有几个问题: (a) 我没有问关于优化的问题,因为如果你阅读我的帖子,你会发现我已经明确关闭了优化;相反,这是一个关于编译器如何生成代码的问题,并且接受的答案反映了(b)即使这确实代表了我认为的不一致或矛盾,它也没有说明这个建议的有效性;换句话说,“tu quoque”的说法是错误的。
  • 为什么我们使用缓冲输入/输出?为什么我们支持 SIMD 指令?人们为什么要超频?这些都是人们使用的相同数量级的小优化,因为它们可以导致明显的性能差异。总有一天,算法不再是你程序的瓶颈。
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 2019-04-07
  • 2021-01-30
  • 2019-03-15
相关资源
最近更新 更多