আমি সদৃশকে অনুমতি না দিয়ে কিছু পিক্সেল অবস্থান সঞ্চয় করতে চেয়েছিলাম, তাই প্রথম জিনিসটি মনে হয় 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 সেকেন্ড সময় নেয়।
যদিও নিম্নলিখিত কোডটি (যা সুস্পষ্ট কারণে ভাল পছন্দ নয়) লাগে মাত্র ১.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 সেকেন্ডটি উত্তরটিতে প্রদর্শিত সংখ্যাগুলির চেয়ে অনেক বেশি।
- ডুপ্লিকেট ছাড়াই পয়েন্টগুলি সঞ্চয় করার আরও ভাল উপায় কী?