c# - 提高字符串生成器的性能

标签 c# .net

大量的 StringBuilder.Append() 操作是否可以通过使用分配在线程堆栈上的 char[] 来优化,以使用指针按字符构建字符串?

        unsafe
        {
            const Int32 width = 1024;

            Char* msg = stackalloc Char[width];

            Int32 index = 0;

            property = Environment.MachineName;

            for (Int32 i = 0; i < property.Length; i++)
                    msg[index++] = property[i];             

            return new String(msg, 0, width);
        }

与使用 StringBuilder 相比,这提供了大约 25% 的改进,结果并不十分令人满意。

最佳答案

如果你预先知道你的最终字符串有多大(就像你看起来的那样),你可以构建具有该容量的 StringBuilder 开始,所以它花费更少的时间重新分配空间:

var sb = new StringBuilder();   
// capacity 16, will expand as needed

var sb30000 = new StringBuilder(30000);   
// capacity 30000, will not need to expand until that length is passed

这可能有点帮助。

关于c# - 提高字符串生成器的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11133973/

相关文章:

c# - C# 中的委托(delegate)模式与委托(delegate)关键字

java - 在java中将RAW图像转换为jpg

c# - 在 C# 中使用 new 关键字

c# - .NET throttle 算法

c# - 如何使用复选框动态更改 WPF 控件的模板?

c# - 在代码中使用千位分隔符

c# - 文件名路径中撇号代码的特殊字符替换

.net - 什么时候应该使用静态 IoC 容器?

.net - 我应该使用什么散列函数来散列小数值?

c# - Automapper ProjectTo 将 ToList 添加到子属性中