2

可以通过使用在线程堆栈上分配来使用指针按字符构建字符串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);
        }

与使用相比,这提供了大约 25% 的改进StringBuilder,因此不太令人满意。

4

1 回答 1

7

如果您预先知道最终的字符串将有多大(就像您所做的那样),您可以构建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

这可能会有所帮助。

于 2012-06-21T08:13:56.713 回答