关于DateTime的问题.现在在c#中
本文关键字:问题 DateTime 关于 | 更新日期: 2023-09-27 18:09:14
DateTime startTime = System.DateTime.Now;
//do the search
Graph_SearchBFS BFS = new Graph_SearchBFS(Graph, sourceCell, targetCell);
DateTime endTime = System.DateTime.Now;
为什么startTime等于endTime?这是什么意思?顺便说一下,我的目标是测量图搜索需要多少时间。
谢谢
这意味着系统时钟粒度太大,无法准确测量这类事情——换句话说,调用构造函数发生得非常快。
但是,您可以使用一个更适合精确计时的类——或者至少,它可以利用高精度时钟(如果有的话):Stopwatch
.
Stopwatch sw = Stopwatch.StartNew();
Graph_SearchBFS BFS = new Graph_SearchBFS(Graph, sourceCell, targetCell);
sw.Stop();
现在您可以查看sw.Elapsed
属性,看看它花了多长时间。
作为一个旁白,是你的Graph_SearchBFS
构造器实际上做的工作?如果是这样,那也有点设计的味道。通常我希望代码更像这样:
Graph_SearchBFS BFS = new Graph_SearchBFS(Graph);
Stopwatch sw = Stopwatch.StartNew();
BFS.FindCell(sourceCell, targetCell);
sw.Stop();
或类似的东西。然后你可以在"finding"部分循环多次:
Graph_SearchBFS BFS = new Graph_SearchBFS(Graph);
Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < Iterations; i++)
{
BFS.FindCell(sourceCell, targetCell);
}
sw.Stop();
可能是因为你的方法比时钟的分辨率运行得快。
使用StopWatch
类代替;它更精确。
使用Stopwatch测量执行速度
Stopwatch sw = new Stopwatch();
sw.Start();
Graph_SearchBFS BFS = new Graph_SearchBFS(Graph, sourceCell, targetCell);
sw.Stop();
Debug.WriteLine("Time to query: " + sw.ElapsedMilliseconds + " ms");
可能是该方法非常快。你看过毫秒数或滴答数吗?
http://msdn.microsoft.com/en-us/library/system.datetime.millisecond.aspx http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx