Unity 常见的GC问题(持续更新)
常见问题1:for循环,foreach循环,while循环
省略测试过程
在2018.4测试后,List<string> 用foreach遍历不会有gc,但其他类型都有,
所以建议:
List<> 还是都用for,while循环;
Array 用for、foreach均可;
Dictionary<> 使用
Dictionary<string, int> mData = new Dictionary<string, int>();
var e = mData.GetEnumerator(); e.MoveNext(); for (int i = 0; i < mData.Count; e.MoveNext(), i++) { //do something }
或者
Dictionary<string, int> mData = new Dictionary<string, int>();
var enumerator = mData.GetEnumerator();
while (enumerator.MoveNext())
{
//do something
}
执行速度稍有不同,Dictionary 100个以内,上面两种方法都比foreach快。(偷懒只测试了100个的情况,其他的自测下吧。)
常见问题2:字符串拼接
关于 ‘+’ 和StringBuilder:
+ : 没几个的话可以直接拼。
StringBuilder :拼接的多,请用SB。
如果可以的话还是找找第三方的库来用。ZString之类。
千万不要在Update里做一些奇奇怪怪的会导致大量GC的事!请千万注意Update里是否做了额外不必要的操作。
浙公网安备 33010602011771号