Ngoài sự tò mò, tôi muốn kiểm tra số lượng bọ ve để so sánh một GenericList với ArrayList.Tại sao một Danh sách đơn giản <T> dường như chậm hơn một ArrayList?
Và đối với mã bên dưới khi tôi kiểm tra đồng hồ bấm giờ, ArrayList có vẻ nhanh hơn.
Tôi có làm điều gì đó sai hoặc có giải thích cho điều này không? (Tôi tin Danh sách sto được nhanh hơn nhiều)
Tesing Mã và đầu ra dưới đây:
private static void ArrayListVsGenericList()
{
// Measure for ArrayList
Stopwatch w0 = new Stopwatch();
w0.Start();
ArrayList aList = new ArrayList();
for (int i = 0; i < 1001; i++)
{
Point p = new Point();
p.X = p.Y = i;
aList.Add(p);
}
foreach (Point point in aList)
{
int v0 = ((Point) aList[8]).X; //unboxing
}
w0.Stop();
// Measure for Generic List<Point>
Stopwatch w1 = new Stopwatch();
w1.Start();
List<Point> list = new List<Point>();
for (int i = 0; i < 1001; i++)
{
Point p = new Point();
p.X = p.Y = i;
list.Add(p);
}
foreach (var point in list)
{
int v1 = list[8].X;
}
w1.Stop();
Console.WriteLine("Watch 0 : " + w0.ElapsedTicks);
Console.WriteLine("Watch 1 : " + w1.ElapsedTicks);
Console.WriteLine("Watch 0 > Watch 1 : " + (w0.ElapsedTicks > w1.ElapsedTicks));
}
Tôi không nghĩ rằng thử nghiệm này là đáng tin cậy. Trình tự thực thi mã là quan trọng, để bắt đầu. Việc thêm vào Danh sách thứ hai có thể bị phân bổ trước đó. Ngoài ra 1000 yếu tố là một tập hợp nhỏ. Bạn chắc chắn nên tách các điền và nhận được của hai loại danh sách trong hai chương trình khác nhau và sau đó kiểm tra chúng bằng cách sử dụng một hồ sơ, không đồng hồ bấm giờ. – vulkanino
Làm thế nào để nó trông khi sử dụng 'int' thay vì 'Point's? Khi kiểm tra danh sách chung trước? –
Vâng, khi tôi tăng số phần tử lên 1000001 generics thì nhanh hơn. Nhưng điều này có nghĩa là Generics không thể được coi là NHANH CHÓNG nhất khi làm việc trên các bộ phần tử nhỏ? – pencilCake