Итак, у меня есть следующий фрагмент кода в моем 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();
}
}
После запуска Main()
под dotMemory
в течение примерно 6 минут я получаю следующие результаты
Приложение начинается с 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);
}