Я хотів зберігати деякі пікселі, не допускаючи дублікатів, тому перше, що спадає на думку, це HashSet<Point>
або подібні класи. Однак це здається дуже повільним порівняно з чимось подібним HashSet<string>
.
Наприклад, цей код:
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));
}
}
}
займає приблизно 22,5 секунди.
У той час як наступний код (який з очевидних причин не є найкращим вибором) займає всього 1,6 секунди:
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);
}
}
}
Отже, мої запитання:
- Чи є причина в цьому? Я перевірив цю відповідь , але 22,5 сек набагато більше цифр, показаних у цій відповіді.
- Чи є кращий спосіб зберігати очки без дублікатів?