在执行C#中替换之前,执行检查是或多或少的效率?

这是一个几乎学术上的问题,但我很好奇的答案.

假设您有一个循环,可在数据集中的每一行执行例行替换.假设有10000行.

有这样的东西效率更高:

 Row = Row.Replace('X', 'Y');

或者检查行是否包含首先要替换的字符,如下所示:

 if (Row.Contains('X')) Row = Row.Replace('X', 'Y');

效率方面有差异吗?我意识到,差异可能非常小,我有兴趣知道如果一种方式比其他方式更好,无论它可能有多好.另外,如果找到被替换的角色的概率为90%,那么您的答案是否会不同?

最佳答案
对于你的支票,Row.Contains(‘X’)是一个O(n)函数,这意味着它一次迭代整个字符串一个字符,以查看该字符是否存在.

Row.Replace(‘X’,’Y’)的工作方式完全相同,它每次检查每个字符一个字符.

所以,如果你有这个支票,你可以迭代字符串两次.如果你只是替换,你可以迭代字符串一次.

转载注明原文:在执行C#中替换之前,执行检查是或多或少的效率? - 代码日志