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里是否做了额外不必要的操作。

posted on 2020-11-24 23:14  optexpr  阅读(1196)  评论(0)    收藏  举报

导航