将 StringBuilder 用于串联

本文介绍字符串串联的性能见解。

原因

对 System.String.Concat 的调用是分析数据的重要组成部分。 请考虑使用 StringBuilder 类从多个段构造字符串。

性能见解说明

String 对象是不可变的。 因此,对字符串进行任何修改都将创建新的字符串对象并对原始对象进行垃圾回收。 无论显式调用 String.Concat 或使用字符串串联运算符(如 + 或 +=),此行为都是相同的。 如果频繁调用这些方法,如以紧密循环地方式将字符添加到字符串,则会导致程序性能降低。

StringBuilder 类是可变的对象,与 System.String 不同,StringBuilder 上修改此类的实例的大多数方法都将返回对该相同实例的引用。 可以插入字符或将文本追加到 StringBuilder 实例,并删除或替换实例中的字符,而无需分配新的实例和删除原始实例。

如何调查警告

在 CPU 使用率工具中,单击“查看源代码”以转到调用树和源行突出显示视图,其中显示了字符串串联中花费最多时间的位置。 如果问题发生在应用程序中的多个位置,请导航到调用方/被调用方视图以查看每个调用位置。

另请参阅