【问题标题】:Replace first and last character upon condition (which method is faster)?根据条件替换第一个和最后一个字符(哪种方法更快)?
【发布时间】:2015-03-02 05:17:50
【问题描述】:

我有一个包含数千个字符串的列表,可能以下列形式出现:

单词

或

“不止一个词”

我想在它们出现时删除“”,以便我可以将字符串保存到我的数据库中。

我想知道哪种方法更快:

  1. 使用line.replace("\"","");
  2. 验证第一个字符是 '"',然后创建一个从字符 1 到长度 - 1 的子字符串。

甚至,有没有更好的方法来做到这一点?

【问题讨论】:

  • 这两种方法都需要遍历几乎整个字符串,但substring 不必将每个字符与" 进行比较,因此它可能会更快。
  • 预优化是邪恶的,只是说。除非它成为一个问题,否则你不应该担心它。您有性能问题吗?
  • line.replace 迭代每个字符,进行比较并将其存储在一个新的缓冲区数组中。另一方面, line.substring 在内部使用 JNI 和 Arrays.copyOfRange 来创建一个新字符串。 line.substring 可能会更快。
  • @Vince - 我不确定这是预优化。对我来说(天真地),它观察 Big-O 类型的东西。我尝试在考虑内存/空间/时间权衡的情况下选择算法和实现。当您可以选择已知执行要求的东西时,为什么还要掷骰子呢?或者为什么要等它成为问题?
  • @jww 预优化是在您知道需要它们之前执行任何优化。如果他觉得他需要扩展他的应用程序,而他当前的系统无法扩展,那么这将是一个问题。但是花时间尝试优化可能不需要优化的东西会浪费大量时间,从而导致进展缓慢。尽管这可能适合“时间复杂度”类型的辩论,但他没有在该级别上展示过对这种情况的先前研究。他担心提高性能,但没有告诉我们是否真的需要它,这属于预优化

标签: java string optimization replace


【解决方案1】:

第二种方法更快。它最多会执行一个字符比较和一个数组副本,而不是将字符串中的所有字符与 " 字符进行比较。

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多