字符串优化

发布时间 2023-12-21 22:10:21作者: mc宇少

在C#中,string是引用类型,每次动态创建一个string,c#都会在堆内存中分配一个内存用于存放字符串(包括字符串拼接、字符串分割等)。

解决方法有两种:

1.自建缓存机制,可以用一些标志性的Key值来一一对应字符串,比如游戏项目中常用ID来构造某个字符串,伪代码如下:

ResData data = GetDataById(Id);

string strName = "xxxx" + data.Name;

  可以用字典将strName缓存起来,用id当key,尝试复用。

2.用C#的一些“不安全”的native方法,也就是直接使用指针来改变string中字符串的值,这样就可以重复利用string,而不需要重新分配内存。

实现:将不用的字符串用长度当key缓存起来,要申请新的字符串的时候尝试从缓存里拿并通过指针将字符数组(字符串本质上还是字符数组)改成需要的值。