【问题标题】:Stopwatch returning one tick秒表返回一个刻度
【发布时间】:2019-06-05 11:14:58
【问题描述】:

我有一个简单的程序,它应该对表格进行排序,并测量执行此操作所需的处理器滴答数:

timePerRun = Stopwatch.StartNew();                                        
QuickSortLibrary.Quicksort.QuickSort(tabOfInts, 0, tabOfInts.Length-1);   
timePerRun.Stop();   

唯一的问题是,当我尝试对包含 ~15 个元素的表进行排序时,我得到 1-4 个刻度。有没有可能它发生得如此之快,或者秒表只测量这种方法中发生的事情,而不是实际排序的方法?

【问题讨论】:

  • 这两者都在衡量。一个包含 15 个元素的表格可以很快排序。
  • 如果您只是想对您的程序进行基准测试,只需使用 BenchmarkDotNet 之类的东西即可。
  • 这不是关于基准测试,它应该衡量它并显示价值。我只是很困惑它这么快就完成了整个排序
  • 现代 CPU 每秒可以执行数十亿次操作。 Ticks 不是 CPU 周期的度量。
  • QuickSortLibrary.Quicksort.QuickSort 调用发生在同一个线程还是单独的线程上?它是优化的发布版本还是调试版本?数据是为了排序而随机生成的,还是为了更快地执行QuickSortLibrary.Quicksort.QuickSort而设计的?在具有随机数据场景的单线程调试构建中,我非常怀疑调用是否会在单个滴答声中完成。另一方面,带有人为数据的发布版本是可能的(我猜)

标签: c# .net stopwatch


【解决方案1】:

这真的有可能发生得如此之快。对于这么少的元素,它们都可以放入缓存中,这对于当代 CPU 来说是个笑话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多