【问题标题】:string.contains() vs string.equals() or string == performance [closed]string.contains() vs string.equals() 或 string == 性能 [关闭]
【发布时间】:2016-06-02 18:13:44
【问题描述】:

我从一个长度为 45 个字符的 API 返回一个字符串。有一个词对于一个条件是唯一的,而不会出现在另一个条件中。

我想知道使用 string.contains() 是否比将整个字符串与 string.equals() 或 string == "blah blah" 进行比较在性能方面更快。

我不知道这些方法的内部工作原理,但从逻辑上讲,contains() 似乎应该更快,因为它可以在找到匹配项后停止遍历字符串。这是准确的吗?顺便说一句,我要检查的单词是字符串中的第一个单词。

【问题讨论】:

  • ContainsEquals 不等价且不可互换。
  • “我要检查的单词是字符串中的第一个单词”——听起来你想要StartsWith,对吧?
  • 你真的有性能问题吗?我问是因为这几乎总是过度优化。考虑到这是一个 API 调用,我什至不在乎哪个是最性能。 (但我会关心哪个在功能上是正确的)
  • 你能举出你所比较的例子吗?如果您要进行子字符串匹配(Contains 所做的),这听起来甚至不像 Equals== 有意义。
  • 哇...不知道为什么所有的反对票,似乎是一个合法的问题。 @tnw 为什么不先问专家,如果有人已经掌握了知识,为什么不利用这个选项……这不就是 SO 的用途吗?

标签: c# string performance


【解决方案1】:

我同意 D Stanley 的观点(评论)。你应该使用String.StartsWith()

也就是说,我也不知道每个方法的内部工作原理,但我可以看到你的逻辑。但是“String.Contains()”可能仍然会在处理之前加载整个字符串,在这种情况下性能差异会非常小。

最后一点,字符串长度只有 45 个字符,性能差异应该非常小。当我写了一个垃圾方法来替换字符时,我很震惊,发现它可以在眨眼之间处理大约 10kb 的文本。所以除非你在你的应用程序中做一些疯狂的处理,否则它应该没什么关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    相关资源
    最近更新 更多