У меня есть два цикла "for". Когда записей ~100 они работают быстро, но когда записей больше 100000 скорость обработки может быть и час. Как я могу ускорить данный алгоритм? Я думал разбить его на несколько параллельных потоков, но тогда программа может не увидеть соответствие в разных поток, соответственно повторы останутся.
HashSet<IP> tbl = new HashSet<IP>();
foreach (IP x in IPs)
{
if (x.DataValid())
tbl.Add(x);
}
IPs.Clear();
IPs.AddRange(tbl);
for (int i = 0; i < IPs.Count; i++)
{
for (int j = IPs.Count - 1; j > i; j--)
if (IPs[i].ip.Equals(IPs[j].ip))
IPs.RemoveAt(j);
int status1 = 100 * i / IPs.Count;
Dispatcher.Invoke(() => LabelStatusValue.Text = status1 + "%");
Dispatcher.Invoke(() => progress.Value = status1);
}
Где IPs элемент класса IP:
class IP
{
public string ip = "";
public string port = "";
public List<string> data = new List<string>();
public override int GetHashCode()
{
return ip.GetHashCode();
}
public bool DataValid()
{
System.Net.IPAddress address;
int port_number = -1;
return System.Net.IPAddress.TryParse(ip, out address)
&& int.TryParse(port, out port_number)
&& port_number > 0 && port_number < 65536;
}
}
Нужно что-то сделать с двумя циклами "for". Думаю можно использовать Distinct()
и с помощью LINQ получить индексы повторяющихся элементов, но у меня не хватает знаний, чтоб сделать это...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли в c#, visualstudio определить переменную условной компиляции в другом проекте?
Мне необходимо была бинарная сериализация в один файл, предположим, datadat
Подскажите как с помощью DataVisualisationTolkit посторить сплайн график, как должна выглядить xaml разметка ? Если можно небольшой пример