我是C#的新手,所以请原谅我的错误。
每次调用那段代码时,我想替换字符串的某些部分(每次调用2-4次)。
我想知道哪种方法在性能方面更好用:string.Replace
或stringBuilder.Replace()
?
如果这段代码被同时调用10.000次怎么办?
答案 0 :(得分:3)
找出哪一个更快的最佳方法是针对您的特定问题进行基准测试 - 编写一个简单的测试工具并为两个选项计时。
话虽如此 - C#字符串是immutable,这意味着您无法在创建它们后对其进行更改。当您调用String.Replace
时,运行时必须为结果创建一个新的String
实例。这意味着对同一个字符串的一系列更改将会很慢,因为运行时必须为每个操作创建一个新对象,每次都分配内存并复制字符串数据。
StringBuilder
专门设计为此类情况的可变字符串 - 避免在每次操作时创建新的String
实例。
如果你在同一个字符串上执行一系列StringBuilder
调用,那么Replace
几乎肯定会更快。
答案 1 :(得分:2)
在您的字符串生成后使用String.Replace()
,它将立即替换所有位置。
如果你用一些例子来解释你的场景,那会更好。
请看这个链接,它有一个很好的描述:Comparing RegEx.Replace, String.Replace and StringBuilder.Replace – Which has better performance?
答案 2 :(得分:0)
String
替换与StringBuilder
替换不同。但从表面上看它们是一样的。
StringBuilder纯粹是一种优化,但考虑到字符串使用的普遍性,它是至关重要的。String.Replace
总是创建一个新字符串 - StringBuilder.Replace
不会。