200万个虚拟行的内存使用情况使用.NET Core 2.0的DataTable为694 MB,但使用.NET Framework为405 MB
为什么会出现这种差异?
这是两个平台的控制台应用程序中使用的相同示例代码:
DataTable dt = new DataTable();
dt.Columns.Add("a");
dt.Columns.Add("b");
dt.Columns.Add("c");
var watch = Stopwatch.StartNew();
for (int i = 0; i < 2000000; i++)
{
var row = dt.NewRow();
row["a"] = i;
row["b"] = i;
row["c"] = i;
dt.Rows.Add(row);
}
watch.Stop();
Console.WriteLine("Time:" + watch.ElapsedMilliseconds.ToString());
Console.WriteLine("Memory (MB):" + GC.GetTotalMemory(false) / 1048576);
Console.WriteLine("Working set (MB):" + Process.GetCurrentProcess().WorkingSet64 / 1048576);
答案 0 :(得分:0)
默认情况下,“完整框架版本”
检查了“首选32位”