Tôi đang thực hành các vấn đề từ MCTS Exam 70-536 Microsft .Net Framework Application Dev Foundation, và một trong những vấn đề là tạo ra hai lớp, một kiểu generic, một kiểu đối tượng vừa thực hiện cùng một điều ; trong đó một vòng lặp sử dụng lớp và lặp lại hàng nghìn lần. Và sử dụng bộ hẹn giờ, thời gian thực hiện của cả hai. Có một bài đăng khác tại số C# generics question tìm kiếm cùng một nhiệm vụ nhưng không trả lời.Generics vs Object performance
Về cơ bản, nếu trong mã của tôi, tôi chạy lớp chung trước tiên phải mất trình ghi nhật ký để xử lý. Nếu tôi chạy lớp đối tượng đầu tiên hơn lớp đối tượng sẽ mất nhiều thời gian hơn để xử lý. Toàn bộ ý tưởng là để chứng minh rằng generics hoạt động nhanh hơn.
Tôi đã sử dụng mã người dùng ban đầu để tiết kiệm thời gian cho tôi. Tôi không đặc biệt nhìn thấy bất cứ điều gì sai trái với mã và đã bối rối bởi kết quả. Có thể một số giải thích tại sao các kết quả bất thường?
Cảm ơn,
Risho
Đây là mã:
class Program
{
class Object_Sample
{
public Object_Sample()
{
Console.WriteLine("Object_Sample Class");
}
public long getTicks()
{
return DateTime.Now.Ticks;
}
public void display(Object a)
{
Console.WriteLine("{0}", a);
}
}
class Generics_Samle<T>
{
public Generics_Samle()
{
Console.WriteLine("Generics_Sample Class");
}
public long getTicks()
{
return DateTime.Now.Ticks;
}
public void display(T a)
{
Console.WriteLine("{0}", a);
}
}
static void Main(string[] args)
{
long ticks_initial, ticks_final, diff_generics, diff_object;
Object_Sample OS = new Object_Sample();
Generics_Samle<int> GS = new Generics_Samle<int>();
//Generic Sample
ticks_initial = 0;
ticks_final = 0;
ticks_initial = GS.getTicks();
for (int i = 0; i < 50000; i++)
{
GS.display(i);
}
ticks_final = GS.getTicks();
diff_generics = ticks_final - ticks_initial;
//Object Sample
ticks_initial = 0;
ticks_final = 0;
ticks_initial = OS.getTicks();
for (int j = 0; j < 50000; j++)
{
OS.display(j);
}
ticks_final = OS.getTicks();
diff_object = ticks_final - ticks_initial;
Console.WriteLine("\nPerformance of Generics {0}", diff_generics);
Console.WriteLine("Performance of Object {0}", diff_object);
Console.ReadKey();
}
}
Bạn nên chấp nhận câu trả lời cho câu hỏi của mình. – SLaks
Bạn nên sử dụng lớp 'Đồng hồ bấm giờ '. – SLaks
Bạn nên nhấp vào dấu kiểm rỗng bên cạnh câu trả lời tốt nhất cho mỗi câu hỏi của bạn để chấp nhận câu trả lời đó. – SLaks