比较缩放与 BenchmarkDotNet

Compare scaling with BenchmarkDotNet

我有一个方法需要迭代集合(准确地说是 DataRowCollection)。

当前的实现有点慢,所以我一直在试用更快的一个。我使用 BenchmarkDotNet 比较了具有相同参数的执行时间,如果集合足够大,它明显更快。

我怀疑如果馆藏相对较小,情况就不会如此。因此,我真的很想比较两者的缩放比例:在 1、10、100、1,000、10,000 个元素时哪个更快?

据我所知,BenchmarkDotNet 没有为此内置的工具。我想要的是向它传递对集合的引用,并让它执行具有不同大小或切片的方法。 (例如通过将其复制到不同大小的 ILists。)

基本上,最终得到像 http://ridiculousfish.com/blog/posts/array.html

这样的图表
[Params(1, 10, 100, 1000, 10000)]
public int Size { get; set; }

然后在测试中使用 Size。它应该自动输出等。您还可以在任何预测试 [GlobalSetup] 方法中使用参数化值,例如预初始化 list/array 以便它不计入基准测试。