したがって、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);
}