gpt4 book ai didi

c# - 在 C# 中执行替换之前执行检查的效率更高还是更低?

转载 作者:可可西里 更新时间:2023-11-01 08:10:25 26 4
gpt4 key购买 nike

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

假设您有一个循环对数据集中的每一行执行例行替换。假设有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com