这几乎是一个学术问题,但我很好奇它的答案。
假设您有一个循环对数据集中的每一行执行例行替换。假设有 10,000 个这样的行。
这样的东西是不是更有效率:
Row = Row.Replace('X', 'Y');
或者首先检查该行是否包含要替换的字符,如下所示:
if (Row.Contains('X')) Row = Row.Replace('X', 'Y');
在效率上有什么区别吗?我意识到差异可能非常小,我有兴趣知道一种方法是否比另一种更好,而不管它可能好多少。此外,如果找到要替换的字符的概率为 10% 与 90%,您的答案会有所不同吗?
最佳答案
对于您的检查,Row.Contains('X')
是一个 O(n) 函数,这意味着它一次遍历整个字符串一个字符以查看该字符是否存在。
Row.Replace('X', 'Y')
的工作方式完全相同,它一次检查每个字符一个字符。
因此,如果您进行了该检查,则可能会对该字符串进行两次迭代。如果您只是替换,您将遍历字符串一次。
关于c# - 在 C# 中执行替换之前执行检查的效率更高还是更低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709022/