【发布时间】: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而设计的?在具有随机数据场景的单线程调试构建中,我非常怀疑调用是否会在单个滴答声中完成。另一方面,带有人为数据的发布版本是可能的(我猜)