对于 U3D Stopwatch ElapsedTick 的疑惑
資深大佬 : bakatori 8
记录方法
static public void time (string key) { if (timeKeyHub.ContainsKey (key)) { Debug.LogError ("MLOG.cs time key already exist"); } else { System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch (); timeKeyHub.Add (key, sw); sw.Start (); } } static public void timeEnd (string key) { if (timeKeyHub.ContainsKey (key)) { System.Diagnostics.Stopwatch sw; timeKeyHub.TryGetValue (key, out sw); sw.Stop(); Debug.Log (string.Format ("<color=blue>{0}</color> {1} ms {2} ticks", key, sw.ElapsedMilliseconds, sw.ElapsedTicks)); // BIRDTODO:用池子 sw = null; timeKeyHub.Remove (key); } else { Debug.LogError ("MLOG.cs timeend key not exist"); } }
A*算法的部分代码
MLOG.time("newCostDealer"); MLOG.time("newCostDealer - newCost"); float newCost = cost_so_far[cur]+ heuristic(next.Pos, end.Pos); MLOG.timeEnd("newCostDealer - newCost"); MLOG.time("newCostDealer - 0"); bool tmp2 = !cost_so_far.ContainsKey(next); MLOG.timeEnd("newCostDealer - 0"); MLOG.time("newCostDealer - temp3"); bool tmp3 = false; if (!tmp2) { tmp3 = newCost < cost_so_far[next]; } MLOG.timeEnd("newCostDealer - temp3"); if (tmp2 || tmp3) { MLOG.time("newCostDealer - 1"); frontier.put(next, newCost); MLOG.timeEnd("newCostDealer - 1"); MLOG.time("newCostDealer - 2"); cost_so_far[next] = newCost; // MLOG.info("came_from[next] = cur," + next.ToString() + " " + cur.ToString()); came_from[next] = cur; MLOG.timeEnd("newCostDealer - 2"); } MLOG.timeEnd("newCostDealer");
运行结果:

求教,为啥 newCostDealer ticks 和其它记录加起来差那么多丫?!
大佬有話說 (1)