Profiler.BeginSample("Enumerable empty cast ToList");
var list = Enumerable.Empty<int>().ToList();
Profiler.EndSample();
Profiler.BeginSample("Create List");
var temp = new List<int>();
const int Max = 1000;
for (int i = 0; i < Max; ++i)
{
temp.Add(i);
}
Profiler.EndSample();
Profiler.BeginSample("IEnumerable cast to List");
IEnumerable e = null;
e = temp.ToList();
Profiler.EndSample();
IEnumerable
に対して単純にToList()を呼び出した結果。↑この結果から
Enumerable.Empty
ではGCAllocは発生していないが、サイズ0でもToListの呼び出しでGCAlloc(40B)が発生することがわかる。 ※Size1000のListに対してToList()を呼び出しe
に代入した際には40KBのGCAllocが発生していることもわかる。