void Start() { t[0] = Time.realtimeSinceStartup; ClassPoolD.Initialize(1000); t[1] = Time.realtimeSinceStartup; Fun1(); t[2] = Time.realtimeSinceStartup; Fun1(); t[3] = Time.realtimeSinceStartup; Fun1(); t[4] = Time.realtimeSinceStartup; Fun1(); t[5] = Time.realtimeSinceStartup; Debug.Log("OPD Loop:" + LOOP_MAX); Debug.Log("OPD create:" + (t[1] - t[0])); Debug.Log("OPD pool:" + (t[2] - t[1])); Debug.Log("OPD pool:" + (t[3] - t[2])); Debug.Log("OPD pool:" + (t[4] - t[3])); Debug.Log("OPD pool:" + (t[5] - t[4])); for (int i = 0; i < 10; i++) { t[0] = Time.realtimeSinceStartup; Fun1(); t[1] = Time.realtimeSinceStartup; Debug.Log(i + " OPD direct:" + (t[1] - t[0])); } }
void Fun1() { PackData _packet; int _rr = 0; for (int i = 0; i < LOOP_MAX; i++) { //int _rand = Random.Range(0, 2); int _rand = _rr++ % 2; if (_rand == 0) { _packet = ClassPoolD.Dequeue(); _packet.PlusCount(); list.Add(_packet); } else if (list.Count > 0) { ClassPoolD.Enqueue(list[0]); list.RemoveAt(0); } } //Debug.Log(list.Count + ":" + ObjectPool<PackData>.queue.Count); }