Tôi muốn lưu trữ một số vị trí pixel mà không cho phép trùng lặp, vì vậy điều đầu tiên xuất hiện là HashSet<Point>
hoặc các lớp tương tự. Tuy nhiên điều này dường như là rất chậm so với một cái gì đó như HashSet<string>
.
Ví dụ: mã này:
HashSet<Point> points = new HashSet<Point>();
using (Bitmap img = new Bitmap(1000, 1000))
{
for (int x = 0; x < img.Width; x++)
{
for (int y = 0; y < img.Height; y++)
{
points.Add(new Point(x, y));
}
}
}
mất khoảng 22,5 giây.
Mặc dù đoạn mã sau (không phải là lựa chọn tốt vì lý do rõ ràng) chỉ mất 1,6 giây:
HashSet<string> points = new HashSet<string>();
using (Bitmap img = new Bitmap(1000, 1000))
{
for (int x = 0; x < img.Width; x++)
{
for (int y = 0; y < img.Height; y++)
{
points.Add(x + "," + y);
}
}
}
Vì vậy, câu hỏi của tôi là:
- Có một lý do cho điều đó? Tôi đã kiểm tra câu trả lời này , nhưng 22,5 giây là nhiều hơn những con số trong câu trả lời đó.
- Có cách nào tốt hơn để lưu trữ điểm mà không trùng lặp?