这是一个几乎学术上的问题,但我很好奇它的答案.
假设您有一个循环,它在数据集中的每一行上执行例程替换.假设有10,000个这样的行.
有这样的事情会更有效率:
Row = Row.Replace('X', 'Y');
Run Code Online (Sandbox Code Playgroud)
或者检查行是否甚至包含首先要替换的字符,如下所示:
if (Row.Contains('X')) Row = Row.Replace('X', 'Y');
Run Code Online (Sandbox Code Playgroud)
效率方面有什么不同吗?我意识到差异可能非常小,我有兴趣知道一种方式是否优于另一种方式,无论它有多好.另外,如果找到要替换的角色的概率是90%,你的回答是否会有所不同?
Mik*_*rds 10
对于您的检查,Row.Contains('X')是一个O(n)函数,这意味着它一次遍历整个字符串一个字符以查看该字符是否存在.
Row.Replace('X', 'Y') 工作方式完全相同,它一次检查每个字符一个字符.
因此,如果您已经进行了检查,则可能会对字符串进行两次迭代.如果你只是替换,你迭代字符串一次.