如何获取毫秒级时间?

3
我想计算使用C#编写的冒泡排序算法所需的时间,但结果一直为0。以下是我的代码:
public void bubbleSort(int[] arr, ref double time)
{
     var sp = new Stopwatch();
     sp.Start();
     int temp = 0;

     for (int i = 0; i < arr.Length; i++)
     {
          for (int sort = 0; sort < arr.Length - 1; sort++)
          {
               if (arr[sort] > arr[sort + 1])
               {
                    temp = arr[sort + 1];
                    arr[sort + 1] = arr[sort];
                    arr[sort] = temp;
               }
         }  
     }
     sp.Stop();

     time = sp.Elapsed.Milliseconds*1000;
}

在主函数中,时间总是为0。我在这段代码中犯了什么错误。

你调试了代码并查看了“毫秒”值吗? - Soner Gönül
1
如果你的数组不是非常大,那么你的算法执行时间可能少于1毫秒。 - Lucas Trzesniewski
通常要测量时间,您需要运行算法数千或数百万次,因为单个迭代通常需要很少的时间才能准确地测量。 - Alejandro
2个回答

5
当你获取Milliseconds时,你只获取时间的毫秒组件。因此,1.0501秒将仅列为50毫秒,而不是1050.1毫秒。此外,由于这返回一个int,你将无法看到小数毫秒,这可能是如此短的算法的情况。
相反,使用TotalMilliseconds,它将以毫秒为单位返回整个时间,并返回一个double,其中包括小数部分。

3
你需要使用 TotalMilliseconds 属性。

获取当前 TimeSpan 结构表示的整个毫秒数和毫秒的小数部分。

time = sp.Elapsed.TotalMilliseconds * 1000;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接