所以,我的Main()
方法中有以下一段代码
for (int x = 0; x < 100; x++) // to mimic BenchmarkDotnet runs
for (int y = 0; y < 10000; y++)
LogicUnderTest();
接下来,我有下面的类在测试下
[MemoryDiagnoser, ShortRunJob]
public class TestBenchmark
{
[Benchmark]
public void Test_1()
{
for (int i = 0; i < 10000; i++)
LogicUnderTest();
}
}
运行大约 6 分钟后,我收到以下Main()
结果dotMemory
该应用程序从 开始10Mb
并上升到14Mb
。
但是当我运行BenchmarkDotnet
测试时,我得到了这个
我看到我已经被2.6GB
分配了。什么?似乎一点都不好。另外,我看不到Gen1
和Gen2
列。这是否意味着代码没有在其中分配任何东西,所以没有什么可显示的?
我如何解释结果?在 .中似乎完全可以DotMemory
,但在BenchmarkDotNet
. 我很新,BenchmarkDotnet
对有关结果的任何信息都有帮助。
PS。LogicUnderTest()
广泛适用于字符串。
PSS。大致LogicUnderTest
是这样实现的
void LogicUnderTest()
{
var dict = new Dictionary<int, string>();
for (int j = 0; j < 1250; j++)
dict.Add(j, $"index_{j}");
string.Join(",", dict.Values);
}