[英].NET 2.0 vs .NET 4.0 runtime allocation performance
从.NET 3.5(.NET 2.0运行时)迁移到NET 4.0之后,当分配更大的内存块时,我们会发现性能下降。 请查看以下测试代码。 这是一个简约的测试程序,代表了我们正在使用的真实场景。 谁能解释.NET 2.0和4.0运行时之间的显着差异,该差异要慢得多? 重现步骤:
谢谢。
亚历克斯
class Program {
static DateTime firstdate, lastdate;
const int CHUNKSIZE = 10 * 1024 * 1024; // 10 MB.
const int TRIALS = 10000;
static void startmeasure() {
firstdate = DateTime.Now;
}
static void stopmeasure() {
lastdate = DateTime.Now;
var duration = lastdate.Subtract(firstdate);
Console.WriteLine("Test duration:" + duration.TotalSeconds.ToString());
}
static void Main(string[] args) {
string input;
do {
input = Console.ReadLine();
switch (input) {
case "test":
handletest();
break;
}
} while (input != "exit");
}
static void handletest() {
startmeasure();
byte[] data;
for (int i = 0; i < TRIALS; i++) {
data = getdata(CHUNKSIZE);
}
stopmeasure();
}
static byte[] getdata(int size) {
return new byte[size];
}
}
正如汉斯指出的那样,答案在于.NET 2和.NET 4优化快速内存分配和早期对象回收的不同方式。 在这种测试代码中看到.NET 4性能较慢并不意味着它在实际应用程序中的性能会降低,因此这只是一种特殊情况。
一种。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.