使用Java字符串,“完整预期文本” .equals(“完整预期文本”)是否比“完整预期文本” .contains(“预期”)更快?

Bre*_*212 -1 java string performance

假设任何时候字符串包含“ expected”,您都知道完整的字符串将始终是“期望的完整文本”,在“ if”条件下执行String.equals(“期望的完整文本”)或String.contains( “预期”)?

我很好奇,确定从头到尾两个字符串是否相等的算法是否比查找子字符串的算法更简单,如果是的话,只是进行相等比较是否比仅寻找子字符串更快?一个子字符串。我猜是否contains()有时更快,这取决于子字符串的长度,也许取决于整个字符串的长度。

chr*_*ke- 5

首先,请始终在易于阅读和理解的基础上编写代码;开发人员发现任何过于聪明的东西所需的努力将淹没微小的计算效率。

就是说,在匹配情况下,要匹配的图案大小的比较将始终至少为O(m),一个字符一个字符的比较便宜。在失败的情况下,这种方法会在发现不匹配时立即退出;在最坏情况下是O(米)(和所需要的唯一状态是一个整数指数)。

另一方面,例如,如果您搜索的字符串为,则子字符串算法可能不得不重复回溯expecteexpecteexpecte。这些算法是相当普遍得多比O(M)(通常至少M + N)O()更昂贵。除非你的“满弦”为显着更长的时间,那么我希望简单的equals是更快的选择,以及作为本意更好的匹配。

  • “要正确,清楚,简洁,快速。要按此顺序进行。” -Wes Dyer,C#编译器开发人员 (3认同)