繁体   English   中英

string.Replace或stringBuilder.Replace()

[英]string.Replace or stringBuilder.Replace()

我是C#的新手,所以请原谅我的错误。

我想每次调用该段代码时都替换字符串的某个部分(每次调用2-4次)。 我想知道哪种方法在性能方面更适合使用: string.ReplacestringBuilder.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM