หลังจากย้ายจาก .NET 3.5 (.NET 2.0 runtime) ไปเป็น NET 4.0 เราจะเห็นประสิทธิภาพที่ลดลงเมื่อจัดสรรหน่วยความจำขนาดใหญ่ขึ้น โปรดตรวจสอบรหัสทดสอบต่อไปนี้ เป็นโปรแกรมการทดสอบที่เรียบง่ายซึ่งแสดงถึงสถานการณ์ในโลกแห่งความเป็นจริงที่เราใช้อยู่ ใครช่วยอธิบายความแตกต่างอย่างมากระหว่างรันไทม์ .NET 2.0 และ 4.0 ซึ่งช้ากว่า มาก ได้ไหม ขั้นตอนในการสืบพันธุ์:
- นำเข้าโค้ดลงในแอปพลิเคชันคอนโซล C#
- กำหนดเป้าหมายแพลตฟอร์มเป็น x64
- กำหนดเป้าหมาย .NET 3.5 และสร้าง Release build
- เรียกใช้ EXE (อย่าเรียกใช้จาก IDE!) และพิมพ์ "test" ลงในคอนโซล
- รอผลครับ.
- ทำซ้ำสำหรับ .NET 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];
}
}