Quería almacenar algunas ubicaciones de píxeles sin permitir duplicados, por lo que lo primero que me viene a la mente son las HashSet<Point>
clases similares. Sin embargo, esto parece ser muy lento en comparación con algo así HashSet<string>
.
Por ejemplo, este código:
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));
}
}
}
Toma alrededor de 22.5 segundos.
Si bien el siguiente código (que no es una buena opción por razones obvias) solo lleva 1.6 segundos:
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);
}
}
}
Entonces, mis preguntas son:
- ¿Hay alguna razón para eso? Verifiqué esta respuesta , pero 22.5 segundos es mucho más que los números que se muestran en esa respuesta.
- ¿Hay una mejor manera de almacenar puntos sin duplicados?