共享StringBuilder 可以使用在一些临时需要拼接字符串的场合 避免重复创建StringBuilder实例
允许一定程度的嵌套 ,默认8层
优点 减少重复创建 避免直接使用String导致的大量GC
应用时注意 牵扯到长时间引用的string不能用这个 又因为默认了8层 导致 如果使用了 也有可能因为instanceid未被重置的原因导致很难被发现这个错误 这是危险的
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class SharedStringBuilder
{
private const int MAX_INSTANCE = 8;
private const int DEFAULE_CAPACITY = 256;
public static StringBuilder Instance {
get
{
if (s_instance == null)
{
s_instance = new StringBuilder[MAX_INSTANCE];
s_instanceId = 0;
}
StringBuilder instance = s_instance[s_instanceId];
if (instance == null)
{
instance = new StringBuilder(DEFAULE_CAPACITY);
s_instance[s_instanceId] = instance;
}
instance.Length = 0;
s_instanceId++;
if (s_instanceId >= MAX_INSTANCE)
{
s_instanceId = 0;
}
return instance;
}
}
private static int s_instanceId;
private static StringBuilder[] s_instance;
}
使用SharedStringBuilder优化字符串拼接

博客介绍了SharedStringBuilder类,该类旨在减少在临时字符串拼接场景中频繁创建StringBuilder实例,从而降低垃圾回收频率。文章提到,SharedStringBuilder允许一定级别的嵌套,并默认设置为8层。虽然它可以优化性能,但需要注意的是,如果长时间引用导致实例未被正确释放,可能会引发问题。此外,由于默认的8层限制,误用可能导致不易察觉的错误。
1424

被折叠的 条评论
为什么被折叠?



