[英]string.Replace or stringBuilder.Replace()
我是C#的新手,所以请原谅我的错误。
我想每次调用该段代码时都替换字符串的某个部分(每次调用2-4次)。 我想知道哪种方法在性能方面更适合使用: string.Replace
或stringBuilder.Replace()
吗?
如果这段代码被同时调用10.000次怎么办?
找出哪个更快的最好方法是针对您的特定问题对其进行基准测试-编写简单的测试工具并计时这两个选项。
话虽这么说-C#字符串是不可变的 ,这意味着创建它们后就无法更改它们。 调用String.Replace
,运行时必须为结果创建一个新的String
实例。 这意味着对同一字符串的一系列更改将很慢,因为运行时必须为每次操作创建一个新对象,分配内存并每次复制字符串数据。
StringBuilder
被专门设计为针对这种情况的可变字符串-避免在每次操作时创建新的String
实例。
因此,如果对同一字符串执行一系列Replace
调用,则StringBuilder
几乎可以肯定会更快。
生成字符串后,使用String.Replace()
,它将立即在所有位置替换。 如果您通过一些示例来说明您的情况,那就更好了。
看一下这个链接,它有一个不错的描述: 比较RegEx.Replace,String.Replace和StringBuilder.Replace –哪个性能更好?
String
替换与StringBuilder
替换不同。 但从表面上看,它们是相同的。 StringBuilder纯粹是一种优化,但是考虑到字符串用法的普遍性,它至关重要。 String.Replace
始终创建一个新字符串StringBuilder.Replace
不会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.