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