记录方法
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
bakatori OP 求教
|