Sau khi tôi nâng cấp các dự án của mình lên .NET 4.0 (Với VS2010), tôi nhận ra rằng chúng chạy chậm hơn so với .NET 2.0 (VS2008). Vì vậy, tôi đã quyết định điểm chuẩn một ứng dụng giao diện điều khiển đơn giản trong cả VS2008 & VS2010 với Khung Target khác nhau:.NET 4.0 Runtime có chạy chậm hơn .NET 2.0 Runtime không?
using System;
using System.Diagnostics;
using System.Reflection;
namespace RuntimePerfTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Assembly.GetCallingAssembly().ImageRuntimeVersion);
Stopwatch sw = new Stopwatch();
while (true)
{
sw.Reset();
sw.Start();
for (int i = 0; i < 1000000000; i++)
{
}
TimeSpan elapsed = sw.Elapsed;
Console.WriteLine(elapsed);
}
}
}
}
Dưới đây là kết quả:
- VS2008
- Target Framework 2.0: ~ 0,25 giây
- Khung mục tiêu 3.0: ~ 0.25 giây
- Khung mục tiêu 3.5: ~ 0.25 giây
- VS2010
- Target Framework 2.0: ~ 3,8 giây
- Target Framework 3.0: ~ 3,8 giây
- Target Framework 3.5: ~ 1,51 giây
- Target Framework 3.5 Client Profile: ~ 3.8 giây
- Khung mục tiêu 4.0: ~ 1.01 giây
- Khung mục tiêu 4.0 Hồ sơ khách hàng: ~ 1.01 giây
Kết luận ban đầu của tôi rõ ràng là các chương trình biên dịch với VS2008 hoạt động nhanh hơn các chương trình được biên dịch với VS2010.
Có ai có thể giải thích những thay đổi hiệu suất đó giữa VS2008 và VS2010 không? và giữa các Khung mục tiêu khác nhau bên trong VS2010?
Bạn có đang chạy các chương trình này thông qua trình gỡ lỗi trong Visual studio hoặc chạy các ứng dụng ở chế độ phát hành không? –
Bạn đã thử nghiệm một vài lần chạy để giảm thiểu các ảnh hưởng bên ngoài? Khi nó đứng, kết quả cũng có thể là do cơ hội một mình. Mặc dù nó * trông * kết luận, một lần chạy duy nhất sẽ mang lại gần như * không * ý nghĩa trong bài kiểm tra này. –
Bạn đã thử chạy nó bên ngoài VS chưa? – eflles